Фрагмент предпочтения с транзакцией popBackStack - PullRequest
0 голосов
/ 16 апреля 2020

После глубокого погружения в stackoverflow, чтобы найти похожую ситуацию, и не повезло, я решил опубликовать свой вопрос. Для моего приложения android у меня есть настройки (MySettings. java) PreferenceFragmentCompat, которые, в свою очередь, при нажатии кнопки выскакивают список (MyList. java) ListFragment и после выбора элемента сохраняют его и закрывают список фрагмент. Переключатель фрагментов реализован следующим образом:

MySettings. java

@Override
public void onResume() {
    super.onResume();
    loadData();
}

private void loadData() {
    // data load from SharedPreferences 
}

...

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(android.R.id.content, MyList.class).addToBackStack().commit();

MyList. java

public void onListItemClick(ListView listView, View view, int position, long id) {
    // data save into SharedPreferences

    ...

    getFragmentManager().popBackStack();
}

Итак, после закрытия фрагмента списка и его возврата к фрагменту настроек я хочу показать (загрузить) ранее сохраненный элемент, а именно я добавил onResume () (предлагается в hier ) метод в свою очередь запускает функцию загрузки данных. Но процесс загрузки не запускается после .popBackStack()

Что я делаю не так? Можно ли вообще добиться этого для концепции настроек с использованием фрагментов? Или есть лучший способ? Если да, пожалуйста, поделитесь своим опытом.

Буду признателен за любую помощь!

1 Ответ

0 голосов
/ 16 апреля 2020

onResume относится к Activity и вызывается только при возобновлении Activity. Когда вы используете ft.replace, фрагмент предпочтения воссоздается при вызове popBackStack().

Таким образом, вы можете поместить loadData() в метод onCreateView() вашего фрагмента предпочтения.

...