фрагменты назад навигации - PullRequest
       47

фрагменты назад навигации

0 голосов
/ 17 октября 2018

Я объясняю сценарий ниже:

Деятельность 1 (фрагмент1) -> Деятельность 1 (фрагмент2) -> Деятельность 1 (фрагмент 3) -> Деятельность 2 (фрагмент 4) (кнопка ОК)

, если янажмите кнопку ОК на фрагменте 4 в упражнении 2, я должен попасть на упражнение 1 (фрагмент2), а после нажатия на кнопку возврата на фрагменте 2 он должен попасть на фрагмент 1.

Я попробовал следующий код:

activity?.supportFragmentManager?.popBackStack() 

Но это не работает.Любая помощь или предложение о том, как решить эту проблему.Вы можете спросить, почему я использую здесь много фрагментов, но у меня действительно нет других вариантов.

1 Ответ

0 голосов
/ 17 октября 2018

Когда вы нажимаете кнопку OK в Activity2(fragment4), просто введите запись в sharedPreference перед вызовом Activity1 намерения, как это:

SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(key, "1");
editor.commit();

, затем позвоните вашему Activity1:

Intent Activity1 = new Intent(getActivity(), Activity1.class);
startActivity(Activity1);

Теперь в вашем Activity1, перед настройкой просмотра содержимого, просто проверьте общее предпочтение, если в нем хранится переменная key со значением 1.Если оно содержит значение 1, загрузите фрагмент2 в макете кадра frm.Например:

sharedPreferences = getActivity().getSharedPreferences(mypreference, Context.MODE_PRIVATE);
if (sharedPreferences.contains(city)) {
       FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
       fragmentTransaction.replace(R.id.frm,new fragment2()).addToBackStack(null).commit();
}

Когда это действие вызывается обычным образом, общее предпочтение не будет иметь значения 1 в key, поэтому фрагмент1 будет загружен как обычный поток.

Теперь, когда вы переходите к следующему фрагменту отсюда, просто сохраняйте переменную 0 в key в общих настройках.Это можно сделать методом onDetach() из fragment2

Также, чтобы вернуться к фрагменту 1, вы можете следовать этому ответу для более подробного решения.

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