Я создал диалоговое окно, макет которого, кнопки отмены и отправки полностью настроены, благодаря макету.Я хотел бы обработать нажатие на обе кнопки - в частности, мы рассматриваем в этом вопросе кнопку отмены.
Проблема
Когда кнопка отмены нажата, обработчик события щелчка неВыполнено.
Реализация
Пояснения
Я создал фрагмент диалога.Внутри я использую конструктор диалогов для создания своего диалога (как рекомендовано официальной документацией).Я установил обработчик щелчка для кнопки отмены и отменил диалоговое окно внутри.
Кнопка отмены активна (как указано в файле макета).Таким образом, событие обычно хорошо срабатывает.Кажется, что он не обрабатывается.
Sources
DialogFragment.java
NB: далее вывод "ok" не отображается, тогда как вывод отображаетсяссылка на кнопкуЭто означает, что функция, которая устанавливает обработчик события щелчка, выполняется (и что кнопка правильно получена из макета), но обработчик события щелчка не выполняется даже при щелчке.
public class DialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(Objects.requireNonNull(getActivity()));
builder.setView(R.layout.dialog);
View view = LayoutInflater.from(this.getContext()).inflate(R.layout.dialog, null);
Dialog dialog = builder.create();
setCancelButtonListener((Button) Objects.requireNonNull(view.findViewById(R.id.button_cancel)), dialog);
return dialog;
}
private void setCancelButtonListener(Button button, final Dialog dialog) {
System.out.println(button);
button.setOnClickListener( new Button.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("ok");
dialog.cancel();
}
});
}
}
dialog.xml ( т.е.: кнопка отмены в макете XML фрагмента)
<Button
android:clickable="true"
android:id="@+id/button_cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:background="@drawable/background_button"
android:text="@string/cancel"
android:textColor="@color/colorRoyalRedLight"
app:layout_constraintEnd_toStartOf="@+id/button3"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_4" />
Вопрос
Почему событие нажатия кнопки не обрабатывается?Как заставить это работать?