Intereting Posts
Как получить высоту строки состояния и панели кнопок софт-клавиш? Intel HAXM эквивалент для AMD в ОС Windows Как прослушать копию на Android Дооснащение и Джексон и разбор JSON Почему пользовательский размер с уровнем видимости пользователя не отображается в моем отчете? Можно ли проверить, была ли трансляция отправлена ​​в липком режиме? Может ли он быть прерван / удален? Пользовательская кнопка входа в Facebook – Android Как установить высоту AppBarLayout программно в библиотеке поддержки Android v24.0.0? OK / Отмена кнопок в ICS Есть ли хороший инструмент для разработки макета Android? Использование Alarmmanager для запуска службы в определенное время Начало работы Android при нажатии виджета Элемент ListView Прекратить загрузку в webViewClient Уведомление конструктора устарело Android Studio показывает диалог «не удалось создать мост отладки: не удалось запустить сервер adb: невозможно получить результат« adb version »»

Есть ли метод, который работает как исходный фрагмент для результата?

У меня есть фрагмент в оверлее. Это для входа в службу. В приложении для телефона каждый из шагов, которые я хочу показать в наложении, – это их собственные экраны и действия. Есть три части процесса входа в систему, и каждый из них имеет свою собственную деятельность, которая была вызвана с помощью startActivityForResult ().

Теперь я хочу сделать то же самое, используя фрагменты и наложение. Наложение будет отображать фрагмент, соответствующий каждой активности. Проблема в том, что эти фрагменты размещены в действии в API Honeycomb. Я могу получить первый фрагмент, но мне нужно запуститьActivityForResult (), что невозможно. Есть ли что-то вроде startFragmentForResult (), где я могу запустить новый фрагмент, и когда это будет сделано, вернуть результат в предыдущий фрагмент?

Solutions Collecting From Web of "Есть ли метод, который работает как исходный фрагмент для результата?"

Все фрагменты живут внутри Деяний. Запуск фрагмента для результата не имеет особого смысла, потому что у Activity, в котором он находится, всегда есть доступ к нему, и наоборот. Если Фрагмент должен передать результат, он может получить доступ к своей Деятельности и установить ее результат и завершить его. В случае замены фрагментов в одном действии, активность Activity все еще доступна для обоих фрагментов, и вся ваша передача сообщений может просто проходить через Activity.

Просто помните, что у вас всегда есть связь между Фрагментом и его деятельностью. Запуск и завершение результата – это механизм для общения между действиями. Затем Деятельности могут передавать любую необходимую информацию своим фрагментам.

Если вы хотите, есть некоторые способы общения между фрагментами,

 setTargetFragment(Fragment fragment, int requestCode) getTargetFragment() getTargetRequestCode() 

Вы можете использовать функцию обратного вызова.

 Fragment invoker = getTargetFragment(); if(invoker != null) { invoker.callPublicMethod(); } 

Мои 2 цента.

Я переключаюсь между фрагментами, заменяя старый фрагмент новым, используя hide и show / add (существующий / новый). Таким образом, этот ответ предназначен для разработчиков, которые используют фрагменты, как я.

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

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

 @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if (hidden) return; Result result = Result.getAndReset(); if (result == Result.Refresh) { refresh(); } } public enum Result { Refresh; private static Result RESULT; public static void set(Result result) { if (RESULT == Refresh) { // Refresh already requested - no point in setting anything else; return; } RESULT = result; } public static Result getAndReset() { Result result = RESULT; RESULT = null; return result; } } 

В фрагменте вы можете вызвать getActivity (). Это даст вам доступ к активности, создавшей фрагмент. Оттуда вы можете вызвать свой метод настройки, чтобы установить значения или передать значения.