Не до конца понятно как корректно написать функцию onTimeSet()
для работы с несколькими TimePicker
из фрагментов. Гуглил, но ничего, чтобы помогло не нашел.
TimePickerFragment.java
...
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar c = Calendar.getInstance();
int hour = 0;
int minute = 0;
return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(), hour, minute, DateFormat.is24HourFormat(getActivity()));
}
Mode_Activity.java
...
public class Mode_Activity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {
...
public static class PlaceholderFragment extends Fragment implements View.OnClickListener
{
...
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(getArguments().getInt(ARG_SECTION_NUMBER)==1) {
final View view = inflater.inflate(R.layout.fragment_fragment_1, container, false);
numberPickerDelayChannel = (ScrollableNumberPicker) view.findViewById(R.id.numberPickerDelayChannel);
buttonDelaySend = (Button) view.findViewById(R.id.buttonDelaySend);
radioDelayButtonOn = (RadioButton) view.findViewById(R.id.radioDelayOn);
radioDelayButtonOff = (RadioButton) view.findViewById(R.id.radioDelayOff);
final TextView textDelayTime = (TextView) view.findViewById(R.id.textDelayTime);
textDelayTime.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
DialogFragment timePickerDelay = new TimePickerFragment();
timePickerDelay.show(getFragmentManager(), "time picker");
}
});
buttonDelaySend.setOnClickListener(this);
return view;
...
else if(getArguments().getInt(ARG_SECTION_NUMBER)==3) {
View viewList = inflater.inflate(R.layout.fragment_fragment_3, container, false);
buttonList = (Button) viewList.findViewById(R.id.buttonSchedule);
numberPickerListChanell = (ScrollableNumberPicker) viewList.findViewById(R.id.numberPickerListChanell);
numberPickerListDay = (ScrollableNumberPicker) viewList.findViewById(R.id.numberPickerListDay);
final TextView textScheduleTimeOn = (TextView) viewList.findViewById(R.id.textScheduleTimeOn);
final TextView textScheduleTimeOff = (TextView) viewList.findViewById(R.id.textScheduleTimeOff);
textScheduleTimeOn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
DialogFragment timePickerOn = new TimePickerFragment();
timePickerOn.show(getFragmentManager(), "time picker on");
}
});
textScheduleTimeOff.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
DialogFragment timePickerOff = new TimePickerFragment();
timePickerOff.show(getFragmentManager(), "time picker off");
}
});
buttonList.setOnClickListener(this);
return viewList;
}
}
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
if(findViewById(R.id.textDelayTime).isClickable()){
TextView textView = (TextView) findViewById(R.id.textDelayTime);
textView.setText(hourOfDay + ":" + minute);
}
else if(findViewById(R.id.textScheduleTimeOn).isClickable()){
TextView textView2 = (TextView) findViewById(R.id.textScheduleTimeOn);
textView2.setText(hourOfDay + ":" + minute);
}
else if(findViewById(R.id.textScheduleTimeOff).isClickable()){
TextView textView3 = (TextView) findViewById(R.id.textScheduleTimeOff);
textView3.setText(hourOfDay + ":" + minute);
}
}
}
}
Значение возвращает только первое условие в onTimeSet()
, или default
если писать через switch(get.Id()){ case...}
, два других диалога закачиваются ошибкой после выбора времени и нажатии ОК.
Error Log
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.View.isClickable()' on a null object reference
at com.example.xxxxxx.xxx.Mode_Activity.onTimeSet(Mode_Activity.java:448)
at android.app.TimePickerDialog.onClick(TimePickerDialog.java:145)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5571)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
Mode_Activity.java:442
это строка if(findViewById(R.id.textDelayTime).isClickable()){
.
Использовал isShown()
и getId()
для условий, но ошибка не уходит.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Имеется программа на Java, представляющая из себя небольшую таблицу приблизительно в 10 столбцов
В процессе выполнения метода требуется получить 2 выборки данных из одной и той же веткиЗатем скоректировать значения и записать обратно
При запуске моего старого проекта вышла ошибка в Eclipse под Windows, не понимаю в чём проблема ибо все раньше работаловот код который вывел лог...