Более простым подходом было бы добавить приведенный ниже код в вашу деятельность
/**
* change fragment by calling from other UI parts
*
* @param fragment fragment to be opened
* @param isBackPressEnabled allow back or not
*/
public void replaceFragment(Fragment fragment, Boolean isBackPressEnabled) {
String tag = fragment.getClass().getCanonicalName();
if (getSupportFragmentManager().findFragmentByTag(tag) != null) return;
if (isBackPressEnabled) {
getSupportFragmentManager().beginTransaction().replace(R.id.flContainer, fragment, tag)
.addToBackStack(tag)
.commitAllowingStateLoss();
} else {
getSupportFragmentManager().beginTransaction()
.replace(R.id.flContainer, fragment, tag)
.commitAllowingStateLoss();
}
}
и вызывать вот так из своего фрагмента
if (getActivity() != null) {
((BaseActivity) getActivity()).replaceFragment(AddressListFragment.newInstance(bundle), true);
}
, вам не нужно беспокоиться о реализации,Вы можете изменить его в активности в любое время, просто добавив идентификатор контейнера фрагмента, и все готово.