слушать DatePicker на смену даты
слушать DatePicker на смену даты
как отслеживать изменение даты в DatePicker?
Re: слушать DatePicker на смену даты
повесить на него OnDateChangedListener
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: слушать DatePicker на смену даты
это хорошо, но мне интересны нюансы, например: в каком месте программы это пихать?rezak90 писал(а):повесить на него OnDateChangedListener
это ведь не тоже самое, что повешать на кнопку kNOPKA.setOnClickListener(this);
сделать предварительно implements OnClickListener в названии класса.
хотя, тут до меня доходит, что можно в лэйауте в свойстве "On Click " датапикера вписать имя функции. верно?
Re: слушать DatePicker на смену даты
здесь тоже самое, после обеда если никто до меня не покажет то напишуэто ведь не тоже самое, что повешать на кнопку kNOPKA.setOnClickListener(this);
сделать предварительно implements OnClickListener в названии класса.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: слушать DatePicker на смену даты
Содержимое диалога content_dialog.xml:
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<DatePicker
android:id="@+id/dpDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:padding="6dp" />
</LinearLayout>[/syntax]
Класс диалога:
[syntax=java5]public class BaseDialogFragment extends DialogFragment
{
private AlertDialog baseDialog;
private Context context;
private static final String TAG = "BaseDialogFragment";
public BaseDialogFragment()
{
super();
}
public static BaseDialogFragment newInstanceState()
{
return new BaseDialogFragment();
}
@Override
public void onCreate(Bundle bundle)
{
super.onCreate(bundle);
}
private AlertDialog createDialog()
{
if (baseDialog == null)
{
baseDialog = new AlertDialog.Builder(getActivity()).create();
}
return baseDialog;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
return createDialog();
}
@Override
public int show(FragmentTransaction transaction, String tag)
{
try
{
return super.show(transaction, tag);
}
catch (IllegalStateException e)
{
Log.d(TAG, e.getMessage());
}
return -1;
}
@Override
public void show(FragmentManager manager, String tag)
{
try
{
super.show(manager, tag);
}
catch (IllegalStateException e)
{
Log.d(TAG, e.getMessage());
}
}
public AlertDialog getBaseDialog()
{
return createDialog();
}
public void setBaseDialog(AlertDialog baseDialog)
{
this.baseDialog = baseDialog;
}
}
[/syntax]
Создаём диалог:
[syntax=java5]private DatePicker dpDialog = null;
private Calendar calendar = null;
private void showDialog()
{
View contentView = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.content_dialog, null);
dpDialog = (DatePicker)contentView.findViewById(R.id.dpDialog);
dpDialog.setOnDateChangedListener(onDateChangedListener);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
dialog.setPositiveButton("OK", onClickListenerDialog);
dialog.setNegativeButton("Cancel", onClickListenerDialog);
dialog.setView(contentView)
dialog.setTitle("title").
AlertDialog dialog = builder.create();
BaseDialogFragment dialogFragment = BaseDialogFragment.newInstanceState();
dialogFragment.setBaseDialog(dialog);
dialogFragment.setCancelable(false);
dialogFragment.show(getActivity().getSupportFragmentManager(), null);
}
private OnDateChangedListener onDateChangedListener = new OnDateChangedListener()
{
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
switch (view.getId())
{
case R.id.dpDialog:
if (calendar == null)
calendar = Calendar.getInstance(Locale.US);
calendar.set(year, monthOfYear, dayOfMonth);
break;
default:
break;
}
}
}
private DialogInterface.OnClickListener onClickListenerDialog = new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
switch (which)
{
case DialogInterface.BUTTON_POSITIVE:
break;
case DialogInterface.BUTTON_NEGATIVE:
break;
default:
break;
}
}
}[/syntax]
P.S. писал прям здесь, на работоспособность не проверял но точно работает разве что где то буковку пропустил
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<DatePicker
android:id="@+id/dpDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:padding="6dp" />
</LinearLayout>[/syntax]
Класс диалога:
[syntax=java5]public class BaseDialogFragment extends DialogFragment
{
private AlertDialog baseDialog;
private Context context;
private static final String TAG = "BaseDialogFragment";
public BaseDialogFragment()
{
super();
}
public static BaseDialogFragment newInstanceState()
{
return new BaseDialogFragment();
}
@Override
public void onCreate(Bundle bundle)
{
super.onCreate(bundle);
}
private AlertDialog createDialog()
{
if (baseDialog == null)
{
baseDialog = new AlertDialog.Builder(getActivity()).create();
}
return baseDialog;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
return createDialog();
}
@Override
public int show(FragmentTransaction transaction, String tag)
{
try
{
return super.show(transaction, tag);
}
catch (IllegalStateException e)
{
Log.d(TAG, e.getMessage());
}
return -1;
}
@Override
public void show(FragmentManager manager, String tag)
{
try
{
super.show(manager, tag);
}
catch (IllegalStateException e)
{
Log.d(TAG, e.getMessage());
}
}
public AlertDialog getBaseDialog()
{
return createDialog();
}
public void setBaseDialog(AlertDialog baseDialog)
{
this.baseDialog = baseDialog;
}
}
[/syntax]
Создаём диалог:
[syntax=java5]private DatePicker dpDialog = null;
private Calendar calendar = null;
private void showDialog()
{
View contentView = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.content_dialog, null);
dpDialog = (DatePicker)contentView.findViewById(R.id.dpDialog);
dpDialog.setOnDateChangedListener(onDateChangedListener);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
dialog.setPositiveButton("OK", onClickListenerDialog);
dialog.setNegativeButton("Cancel", onClickListenerDialog);
dialog.setView(contentView)
dialog.setTitle("title").
AlertDialog dialog = builder.create();
BaseDialogFragment dialogFragment = BaseDialogFragment.newInstanceState();
dialogFragment.setBaseDialog(dialog);
dialogFragment.setCancelable(false);
dialogFragment.show(getActivity().getSupportFragmentManager(), null);
}
private OnDateChangedListener onDateChangedListener = new OnDateChangedListener()
{
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
switch (view.getId())
{
case R.id.dpDialog:
if (calendar == null)
calendar = Calendar.getInstance(Locale.US);
calendar.set(year, monthOfYear, dayOfMonth);
break;
default:
break;
}
}
}
private DialogInterface.OnClickListener onClickListenerDialog = new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
switch (which)
{
case DialogInterface.BUTTON_POSITIVE:
break;
case DialogInterface.BUTTON_NEGATIVE:
break;
default:
break;
}
}
}[/syntax]
P.S. писал прям здесь, на работоспособность не проверял но точно работает разве что где то буковку пропустил
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена