Возвращать результат из фрагмента так же, как startActivityForResult в случае Activity - PullRequest
0 голосов
/ 14 марта 2019

У меня есть действие, в котором я добавляю фрагменты. Есть фрагмент (WhenFragment), в который я добавляю другой фрагмент (DateSelectionFragment), чтобы получить дату, и когда я снова нажимаю, мне нужна эта дата, и я хочу установить ее в тексте.view.I использовал OnFragmentInteractionListener для этого, который правильно возвращает результат в WhenFragment. Но я не могу получить доступ к Textview в той реализации OnFragmentInteractionListener, чтобы установить для него дату.

@Override
public void onFragmentInteraction(Bundle bundle) {
   mBinding.textView.setText(bundle.getString("result"),"");
}

Чтобы вернуться к WhenFragment, который я использую

 getActivity().onBackPressed();
 mListener.onFragmentInteraction(bundle);

Это дает исключение nullPointerException.Любая помощь высоко ценится.

Ответы [ 3 ]

1 голос
/ 14 марта 2019

См. Документацию о том, как общаться между фрагментами, используя интерфейсы: https://developer.android.com/training/basics/fragments/communicating

Кроме того, если вы используете ViewModels в своих фрагментах / деятельности, этот учебник может быть полезен.(Вы можете использовать ViewModel действия для передачи данных между фрагментами)

0 голосов
/ 14 марта 2019

Попробуйте изменить функцию возврата следующим образом: -

 mListener.onFragmentInteraction(bundle);    
 getActivity().onBackPressed();

Или

Если вы добавляете второй фрагмент, используя getChildFragmentManager(), то сначала необходимо создать стек фрагментовуправляемый, вместо стека активности. что-то вроде: -

 @Override
public void onBackPressed() {

// If the fragment exists and has some back-stack entry
if (mActivityDirectFragment != null && mActivityDirectFragment.getChildFragmentManager().getBackStackEntryCount() > 0){
    // Get the fragment fragment manager - and pop the backstack
    mActivityDirectFragment.getChildFragmentManager().popBackStack();
}
// Else, nothing in the direct fragment back stack
else{
    // Let super handle the back press
    super.onBackPressed();          
}
}

Некоторые полезные ссылки: -

поведение стека назад с вложенными фрагментами

Отправка данных из вложенных фрагментов в родительский фрагмент

0 голосов
/ 14 марта 2019

Вы можете сохранить значение в sharedPreferences, а затем извлечь его из другого места.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...