我有2个Activites A&B,在活动A中我管理了片段后堆栈,但在一个情况下如下:我有4个从片段1到2到3到4的活动的片段,然后从第四片段开始,我要去活动B现在我想要的是,在Back Button Buttrant frack frack 4应该打开,然后在后片段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();
}
我在这里取得了成功,但是当我从第四片段开始活动B并回到活动A时,我无法管理Activity的片段A的背堆。
我没有任何方法。
您可以在活动中覆盖onBackPressed
,检查哪个片段在最上方,并根据需要决定要做什么:
@Override
public void onBackPressed()
{
// code here
super.onBackPressed(); // check if you need this, depends on your needs
}
使用此代码更改片段
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"在容器上的片段"
只需在commit
addToBackStack(tag_name)
您可以在Kotlin中添加EN扩展功能
fun AppCompatActivity.replaceFragment(containerId: Int, fragment: Fragment) =
supportFragmentManager.beginTransaction()
.replace(containerId, fragment, fragment.javaClass.name)
.addToBackStack(fragment.javaClass.name).commit()