我有2个活动A& B,在Activity A中我管理了片段后栈,但在一种情况下,如下所示: 我有4个片段在Activity中从片段1到2到3到4然后从第4个片段我现在去活动B我想要的是按下后退按钮片段4的Activity应该打开然后再返回片段3等等。
我使用以下功能替换片段并管理后台堆栈
private void changeFragment(Fragment fragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentManager.beginTransaction().replace(R.id.act_home_fl_container, fragment).commit();
}
在背面按
boolean isPopFragment = getSupportFragmentManager().getBackStackEntryCount() > 0 ? true : false;
if (isPopFragment) {
getSupportFragmentManager().popBackStack();
}
我在这里取得了成功但是当我从第4个片段转到活动B并回到活动A时,我无法管理活动A的堆栈片段。
我没有任何方法可以从它开始。
答案 0 :(得分:0)
您可以在活动中覆盖onBackPressed
,检查哪个片段在最顶层,并根据需要决定做什么:
@Override
public void onBackPressed()
{
// code here
super.onBackPressed(); // check if you need this, depends on your needs
}
答案 1 :(得分:0)
使用此代码更改片段
public static void addFragment( final Fragment newFragment, final Fragment hideFragment) {
final FragmentManager fragmentManager = getFragmentManager();
final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.hide(hideFragment);
fragmentTransaction.add(R.id.activity_home_container, newFragment, newFragment.getClass().getSimpleName());
fragmentTransaction.addToBackStack(hideFragment.getClass().getSimpleName());
fragmentTransaction.commitAllowingStateLoss();
}
newFragment“要添加的片段”
hideFragment“容器上的片段”
答案 2 :(得分:0)
只需在addToBackStack(tag_name)
前使用commit
您可以在kotlin中添加en扩展功能
fun AppCompatActivity.replaceFragment(containerId: Int, fragment: Fragment) =
supportFragmentManager.beginTransaction()
.replace(containerId, fragment, fragment.javaClass.name)
.addToBackStack(fragment.javaClass.name).commit()