【问题标题】:back button doesn't work when I want to return to the previous fragment当我想返回上一个片段时,后退按钮不起作用
【发布时间】:2013-01-22 19:54:29
【问题描述】:

我在 MainActivity 中管理两个片段。

其中一个是 ListFragment 的子类,用于显示项目列表。

主要思想是当用户点击其中一个项目时导航到另一个列表视图,并且用户可以在点击返回按钮时返回到上一个列表视图。

传输到新列表的代码如下:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
NewFragment newFragment = new NewFragment();
newFragment.setArguments(getIntent().getExtras());
transaction.replace(R.id.fragment_layout, newFragment);
transaction.addToBackStack(null);
transaction.commit();

但是,我只是简单地退出应用程序,而不是返回上一个视图。 我做错了什么?

【问题讨论】:

  • 我注意到了一些类似的东西,它工作正常,但后来我从 supportfragmentmanager 切换到正常的我猜 android 4 的不支持版本可能坏了......??
  • 哦,我认为在我的情况下,将支持库与普通库混合是一个糟糕的情况。因为我不得不从支持片段管理器切换到支持 PreferenceFragment ......我想我将不得不切换回来...并做一些 hacky 解决方法...

标签: android android-fragments android-listfragment android-fragmentactivity


【解决方案1】:

与活动不同,您必须明确地将内容添加到“后台堆栈”中。基本上,当您的应用显示一个新片段时,您希望返回到预览片段,您调用FragmentTrasaction.addToBackStack()

当用户按下返回时,框架会处理将片段从返回堆栈中弹出。如果您需要更复杂的东西,您可以覆盖片段的后退按钮。这个问题涵盖了,

Android Fragment handle back button press

【讨论】:

  • 但是我确实调用了transaction.addToBackStack(null),还是不行。
【解决方案2】:

后退按钮会关闭顶部的 Activity,并且不会在 Fragment 历史记录中返回。你必须自己使用popBackStack()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 2017-08-03
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多