У меня есть 3 фрагмента фрагмента A, фрагмента B, фрагмента C, которые по умолчанию добавляются в действие при создании, чтобы сохранить его экземпляр после этого, у меня есть еще один фрагмент фрагмента X, который нужно добавить в контейнер фрагментов с помощью backStack при нажатии кнопки, фрагментXотображается при добавлении, но когда мне нужно показать его снова, он не работает.
public class MainActivity extends ActivityBaseClass {
private Fragment fragmentA;
private Fragment fragmentB;
private Fragment fragmentC;
private Fragment fragmentX;
@BindView(R.id.btn_show_fragmentx)
Button mBtnShowFragmentX;
@BindView(R.id.tab_layout)
TabLayout mTab;
private FragmentTransaction transaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
fragmentA = FragmentA.newInstance();
fragmentB = FragmentB.newInstance();
fragmentC = FragmentC.newInstance();
transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.fragment_container, fragmentA, "A");
transaction.add(R.id.fragment_container, fragmentB, "B");
transaction.add(R.id.fragment_container, fragmentC, "C");
transaction.commit();
mTab.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
transaction = getSupportFragmentManager().beginTransaction();
switch (tab.getPosition()) {
case 0:
transaction.show(fragmentA);
transaction.hide(fragmentB);
transaction.hide(fragmentC);
break;
case 1:
transaction.show(fragmentB);
transaction.hide(fragmentA);
transaction.hide(fragmentC);
break;
case 2:
transaction.show(fragmentC);
transaction.hide(fragmentA);
transaction.hide(fragmentB);
break;
}
transaction.commit();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
@OnClick(R.id.btn_show_fragmentx)
public void showFragmentX() {
if (fragmentX == null) {
fragmentX = FragmentX.newInstance();
transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.fragment_container, fragmentX, "X");
transaction.addToBackStack("X");
transaction.commit();
} else {
transaction = getSupportFragmentManager().beginTransaction();
transaction.show(fragmentX);
transaction.addToBackStack("X");
transaction.commit();
}
}
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
transaction = getSupportFragmentManager().beginTransaction();
transaction.hide(fragment);
transaction.commit();
getSupportFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
}