Некорректная работа(код) onTimeSet() c несколькими TimePicker

220
26 июня 2018, 04:30

Не до конца понятно как корректно написать функцию 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() для условий, но ошибка не уходит.

READ ALSO
Хранение данных Java

Хранение данных Java

Имеется программа на Java, представляющая из себя небольшую таблицу приблизительно в 10 столбцов

194
Firebase android оптимизация получения данных

Firebase android оптимизация получения данных

В процессе выполнения метода требуется получить 2 выборки данных из одной и той же веткиЗатем скоректировать значения и записать обратно

209
Ошибка Exception in thread “main” java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication

Ошибка Exception in thread “main” java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication

При запуске моего старого проекта вышла ошибка в Eclipse под Windows, не понимаю в чём проблема ибо все раньше работаловот код который вывел лог...

254
Класс Character: поля класса

Класс Character: поля класса

У класса Character имеется множество констант типа:

206