У меня есть в моем приложении два timepicker
, один для timeIn, а другой для TIMEOUT .При editText
является cliked, он будет отображать диалог timePicker
.Фрагмент уже добавлен: TimePick
private TimePick tp;
tp = new TimePick();
private static EditText timeIn;
private static EditText timeOut;
timeIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //shows timePick
tp.setFlag(TimePick.FLAG_START_DATE);
FragmentTransaction ft = getFragmentManager().beginTransaction();
tp.show(ft, "TimePicker");
}
});
timeOut.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
tp.setFlag(TimePick.FLAG_END_DATE);
FragmentTransaction ft = getFragmentManager().beginTransaction();
tp.show(ft, "TimePicker");
}
});
public static class TimePick extends android.app.DialogFragment implements TimePickerDialog.OnTimeSetListener {
public static final int FLAG_START_DATE = 00;
public static final int FLAG_END_DATE = 01;
private int flag = 00;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
}
public void setFlag(int i) {
flag = i;
}
@Override
public void onTimeSet(TimePicker view, int hourofDay, int minute) {
if (flag == FLAG_START_DATE) {
timeIn.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
TimeIn = timeIn.getText().toString();
}
if (flag == FLAG_END_DATE) {
timeOut.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
TimeOut = timeOut.getText().toString();
}
}
}
Проблема теперь это диалоговое timePicker
показывает только, когда я дважды щелкните на EditText. Можно ли изменить его на один клик, а не на двойной щелчок?
Если я нажал более двух раз, приложение разбилось и отобразило ошибку Fragment already added: TimePick{f1f4f2b #0 TimePicker
. Я получаю одно из решений от моего предыдущего post, которое добавляет условие if-else
, чтобы проверить, отображается ли диалог или нет. Но как насчет TimePicker? Есть ли что-то вроде функции TimePicker d=tp.getTimepicker();
?
Спасибо.
ошибка LogCat
11-27 07:17:40.617 2197-2197/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.project.myapplication, PID: 2197
java.lang.IllegalStateException: Fragment already added: TimePick{f1f4f2b #0 TimePicker}
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1219)
at android.app.BackStackRecord.run(BackStackRecord.java:715)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:482)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
добавить журналы в методе '' OnClick и проверить первый щелчок происходит или нет? –
@ ρяσѕρєяK 'log' не отображается при первом нажатии – Hoo
@ Это происходит из-за того, что editText уже настраивается, помещает текстовое окно вместо edittext и видит, что происходит? –