Time Picker - нет показа диалога - PullRequest
0 голосов
/ 30 января 2019

Добрый вечер,
сегодня я пытаюсь построить Time Picker внутри Android Studio, для этого я посмотрел видео CodingInFlow.Разница в том, что я строю таймер внутри фрагмента, это значит, что я не могу использовать getSupportFragmentManager.Что ж, я правильно понял все остальное, но после нажатия кнопки, после которой должен появиться Time Picker, ничего не происходит, когда Time Picker не отображается, как будто кнопка даже не имеет OnClick.Я думаю, что это может что-то делать с этим getSupportFragmentManager.Я хотел бы показать вам мой код.

AlarmFragment.java:

    @Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    final View fraAla = inflater.inflate(R.layout.fragment_alarm, container, false);


    Button bAlarm = fraAla.findViewById(R.id.buttonAlarm);
    bAlarm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DialogFragment zeitwaehlen = new AlarmTimePicker();
            zeitwaehlen.show(getFragmentManager(), "time picker");
        }
    });
    return inflater.inflate(R.layout.fragment_alarm, container, false);
}

@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    TextView txtAlarm = getActivity().findViewById(R.id.textViewAlarm);
    txtAlarm.setText("Stunde: " + hourOfDay + " Minute: " + minute);

}

AlarmTimePicker.java:

    @NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    Calendar k = Calendar.getInstance();
    int stunde = k.get(Calendar.HOUR_OF_DAY);
    int minute = k.get(Calendar.MINUTE);

    return new TimePickerDialog(getActivity(),(TimePickerDialog.OnTimeSetListener) getActivity(), stunde, minute, DateFormat.is24HourFormat(getActivity()));
}

frag_alarm.xml:

    <TextView
    android:id="@+id/textViewAlarm"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@id/buttonAlarm"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="31dp"
    android:text="time"
    android:textSize="30sp" />

<Button
    android:id="@+id/buttonAlarm"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="open time picker" />

Когда я пытаюсь написать getSupportFragmentManager, приложение вылетает.Я также попытался сделать это так, как этот парень сказал: Как я могу получить доступ к getSupportFragmentManager () во фрагменте? Но так как я новичок в кодировании, я действительно не понял, что он имел в виду
FragmentManager fragManager = myContext.getSupportFragmentManager();
Я понимаю, что он создал новую переменную, но когда я пытаюсь сделать то же самое (конечно, я изменил myContext), я не знаю, как вызвать эту переменную позже в коде.Потому что, когда я набираю имя переменной, оно подчеркивается красным.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

В методе onCreatView() вы возвращаете fraAla вместо inflater.inflate(R.layout.fragment_alarm, container, false);

, потому что создаете две ссылки на представление в createview.

0 голосов
/ 30 января 2019

В методе oncreatview() вы возвращаете дубликат макета.Вам нужно вернуть fraAla вместо inflater.inflate(R.layout.fragment_alarm, container, false);

...