Я обнаружил, что findFragmentByTagэто не так удобно. Если у вас есть String currentFragmentTagваш Activityили родитель Fragment, вы должны сохранить его onSaveInstanceStateи восстановить его onCreate. Даже если вы это сделаете, когда Activityвоссозданный, onAttachFragmentбудет вызван раньше onCreate, поэтому вы не можете использовать currentFragmentTagв onAttachFragment(например, обновить некоторые представления на основеcurrentFragmentTag ), потому что это , возможно , еще не восстановлена.
Я использую следующий код:
Fragment getCurrentFragment() {
List<Fragment> fragments = getSupportFragmentManager().getFragments();
if(fragments.isEmpty()) {
return null;
}
return fragments.get(fragments.size()-1);
}
Документ о FragmentManagerтом, что
Порядок фрагментов в списке - это порядок, в котором они были добавлены или прикреплены.
Когда вам нужно сделать что-то на основе текущего типа фрагмента, просто используйте getCurrentFragment() instance of MyFragmentвместо currentFragmentTag.equals("my_fragment_tag").
Обратите внимание, что getCurrentFragment()in onAttachFragmentне получит присоединение Fragment, но предыдущее прикрепленное.