繁体   English   中英

如何用片段修复后退导航?

[英]How can I fix the back navigation with fragments?

我在实施后退导航时遇到问题。

活动A1启动活动A2 A2包含一个全屏片段:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >

    <!-- fragment goes here -->

</RelativeLayout>

A2onCreate()我将片段F1加载到上面的容器中:

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
    setContentView(R.layout.activity_main);
    replaceFragment(new AccountHomeFragment());
}

public void replaceFragment(Fragment f){
     FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
     fragmentTransaction.replace(R.id.fragment_container, f);
     fragmentTransaction.addToBackStack(f.getClass().getSimpleName());
     fragmentTransaction.commit();
}

并在某些时候用户单击按钮, F1F2代替。 问题是当用户单击后退按钮时:

  • 第一次点击:没有任何反应
  • 第二次点击:从F2转到A1 (跳过F1

我期望什么

  • 第一次点击: F2 > F1
  • 第二次点击: F1 > A1

我注意到如果在F1替换为F2之前按回车:

  • 第一次点击: F1 >黑屏
  • 第二次单击:黑屏-> A1

我认为您的问题也可能是由于将您的第一个片段也添加到了堆栈中引起的。 onCreate ,调用replaceFragment会自动添加它。 只需手动添加片段而无需addToBackStack调用,并对所有后续片段事务使用replaceFragment函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM