слушать DatePicker на смену даты

Интерфейс, диалоги, темы, стили, меню
Ответить
DeMoZ
Сообщения: 17
Зарегистрирован: 26 мар 2013, 05:10

слушать DatePicker на смену даты

Сообщение DeMoZ » 27 апр 2013, 07:57

как отслеживать изменение даты в DatePicker?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: слушать DatePicker на смену даты

Сообщение rezak90 » 27 апр 2013, 08:40

повесить на него OnDateChangedListener
R.id.team
Политика на форуме запрещена

DeMoZ
Сообщения: 17
Зарегистрирован: 26 мар 2013, 05:10

Re: слушать DatePicker на смену даты

Сообщение DeMoZ » 27 апр 2013, 08:50

rezak90 писал(а):повесить на него OnDateChangedListener
это хорошо, но мне интересны нюансы, например: в каком месте программы это пихать?

это ведь не тоже самое, что повешать на кнопку kNOPKA.setOnClickListener(this);
сделать предварительно implements OnClickListener в названии класса.

хотя, тут до меня доходит, что можно в лэйауте в свойстве "On Click " датапикера вписать имя функции. верно?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: слушать DatePicker на смену даты

Сообщение rezak90 » 27 апр 2013, 09:36

это ведь не тоже самое, что повешать на кнопку kNOPKA.setOnClickListener(this);
сделать предварительно implements OnClickListener в названии класса.
здесь тоже самое, после обеда если никто до меня не покажет то напишу
R.id.team
Политика на форуме запрещена

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: слушать DatePicker на смену даты

Сообщение rezak90 » 27 апр 2013, 13:45

Содержимое диалога 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. писал прям здесь, на работоспособность не проверял но точно работает разве что где то буковку пропустил ;)
R.id.team
Политика на форуме запрещена

Ответить