Intereting Posts
Маршрут отображения API Google Maps API v2 Как настроить раскрывающийся список AutoCompleteTextView на Android Перевод анимации отлично работает при определении с помощью XML и только один раз отлично по коду – Android Путь APK не указан для модуля «Пример-пример» Кнопка возврата ActionBarActivity не выскочит из задней части Android: как отключить элементы списка при создании списка Android Studio – невозможно запустить приложение на устройстве minSdk (API 23, N)! = Устройство Sdk (API 22) IntentService: почему мой onHandleIntent никогда не называется? Изменение цвета курсора в SearchView без ActionBarSherlock Изменение цвета оттенка Android EditText программно Как узнать, поддерживает ли Android-устройство Bluetooth Low Energy Как я могу отправить строку через NFC во время Screen-Pinning? Android view layout_width – как программно изменить? Как показать MediaController во время воспроизведения звука в Android? Есть ли способ найти идентификатор ресурса

Кнопка «Диалог» и «Назад»

Есть ли возможность перехватить кнопку DialogFragment в DialogFragment ? Извините за наивный вопрос .. onBackPressed из моего FragmentActivity никогда не называется.

заранее спасибо

  if (imageFile.exists()) { ShowPicDialog newFragment = ShowPicDialog.newInstance(); FragmentTransaction ft = manager.beginTransaction(); Fragment prev = manager.findFragmentByTag("picDialog"); if (prev != null) { ft.remove(prev); } ft.addToBackStack("picDialog"); newFragment.getArguments().putString("path", imageFile.getAbsolutePath()); newFragment.show(ft, "picDialog"); } 

Извините, я добавил фрагмент кода, который я использую, чтобы показать диалог.

Solutions Collecting From Web of "Кнопка «Диалог» и «Назад»"

Трудно сказать, в чем проблема, так как вы не разместили какой-либо код. Но прежде всего я предполагаю, что вы не добавили DialogFragment в задний стек, вызвав метод addToBackStack для FragmentTransaction который вы используете, чтобы добавить свой фрагмент к активности.

На страницах документации для Android есть примеры, которые приводят примеры хорошего шаблона для использования DialogFragment в вашей деятельности .

Поскольку вы показываете диалоговое окно, созданный диалог получит ключевые события, а не родительскую активность. Итак, установите Dialog.OnKeyListener при создании фрагмента Dialog и вызовите setCancelable(false) в Dialog окне, чтобы предотвратить setCancelable(false) его обратно. Затем вы можете обрабатывать задний ключ в OnKeyListener onkey .

Лучший способ обработки диалогового окна с кнопкой «Назад»:

 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return new Dialog(getActivity(), getTheme()){ @Override public void onBackPressed() { // On backpress, do your stuff here. } }; } 

Ответ Рахула Пундхира отлично работает, если вы не используете шаблон строителя. Если вы используете шаблон Builder в своем диалоговом окне, вы можете сделать это:

  @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog alertDialog = new AlertDialog.Builder(getContext()) .setTitle(...) .setPositiveButton(...) .setNegativeButton(...) .setMessage(...) .create(); alertDialog.setOnKeyListener((dialog, keyCode, event) -> { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { // TODO do the "back pressed" work here return true; } return false; }); return alertDialog; } 

Это работает, манипулируя тем, как система onBackPressed() вызывает onBackPressed() (игнорируя отслеживание и прослушивание ACTION_UP). См. Источник в диалоге