如何使用片段修复背面导航?

时间:2013-02-26 14:50:21

标签: android android-fragments

我在实施后退导航方面遇到了问题。

活动A1启动活动A2A2包含全屏片段:

<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>

A2&#39; s onCreate()我将片段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转到A1F1已跳过)

我的期望

  • 第一次点击:F2 - &gt; F1
  • 第二次点击:F1 - &gt; A1

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

  • 第一次点击:F1 - &gt;空白屏幕
  • 第二次点击:空白屏幕 - &gt; A1

1 个答案:

答案 0 :(得分:0)

我认为您的问题可能是由于将第一个片段添加到Backstack而引起的。在您onCreate的{​​{1}}中,您可以自动添加replaceFragment。只需手动添加片段而不需要addToBackStack调用,并使用replaceFragment函数进行所有后续片段事务。