Ответ 1
Проблема с этим подходом заключается в том, что FragmentManager
может создавать новые экземпляры фрагмента, даже если вы поддерживаете ссылку. В этой ситуации несколько экземпляров одного и того же фрагмента будут в памяти (утечка), а ссылка, которую вы поддерживаете, представляет собой экземпляр, который может даже не отображаться. Другими словами, это не безопасно.
Однако безопасно поддерживать ссылку на вашу деятельность в ваших фрагментах.
В вашем фрагменте вы переопределяете
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
home = (YourFragmentActivity) activity;
}
public void onCreate(Bundle savedInstanceState) {
home.setThisFragTag(getTag());
}
В вашем FragmentActivity
public void ThisFragTag(String tag) {
this.fragTag = tag;
}
Теперь в вашей деятельности вы можете получить привязку к экземпляру фрагмента, отображаемому в настоящее время с помощью
(YourFragmentClass) getSupportFragmentManager().findFragmentByTag(fragTag);
Вы можете повторить эту операцию для нескольких фрагментов