【问题标题】:How can I fix the back navigation with fragments?如何使用片段修复后退导航?
【发布时间】:2013-02-26 23:29:21
【问题描述】:

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

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

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 变为A1F1 跳过)

我的期望

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

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

  • 第一次点击:F1->空白屏幕
  • 第二次点击:空白屏幕->A1

【问题讨论】:

  • 如您所愿,您的意思是 F2->F1 然后 F1->A1,对吧?
  • @dmon:当然。我更正了这个问题。
  • 怎么加F2?你用的是 replaceFragment 方法吗?
  • @dmon: 是的,我打电话给 replaceFragment(new F2());

标签: android android-fragments


【解决方案1】:

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

【讨论】:

  • 感谢您的回答。我试过了,但是当我在 F2 中单击返回时,我跳过 A2-F1 并直接返回 A1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
相关资源
最近更新 更多