Я бы хотел обновить представление последнего фрагмента в backstack. (Все мои фрагменты добавлены в backstack
)
То, что я пробовал, это:
Сначала , найдите последний фрагмент из backstack
:
Fragment currentFragment = null;
try {
currentFragment = fragmentManager.findFragmentById(R.id.fragment_placeholder);
return currentFragment;
} catch (NullPointerException e) {
return currentFragment;
}
Во-вторых , извлеките последний фрагмент из backstack
:
fragmentManager.popBackStack(); //did I do wrong here??
наконец , снова добавьте фрагмент в backstack:
fragmentTransaction.replace(R.id.fragment_placeholder, currentFragment, fragmentName);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.commit();
Но когда я запускаю описанную выше процедуру, я получаю пустую страницу. Кажется, отображаемый (последний) фрагмент удаляется, но не добавляется обратно. Зачем? Как обновить вид фрагмента? (Я делаю это, потому что моя локаль изменена, и мне нужно обновить отображаемый фрагмент)
============ 2-й способ, которым я пытался ==============
После того, как я получил последний фрагмент currentFragment
, я также попытался вызвать onCreateView()
напрямую, чтобы обновить представление:
currentFrag.onCreateView(getLayoutInflater(), null, null);
но я получил NullPointerException .