【问题标题】:How do I exit a fragment and return to my drawer activity using the back button?如何使用后退按钮退出片段并返回到我的抽屉活动?
【发布时间】:2016-10-01 18:28:37
【问题描述】:

我正在尝试制作一个以DrawerActivity 为主要活动的应用程序。我在其中实现了 8 个片段,它们对应于抽屉中的每个项目。现在,我遇到的问题是,每当我尝试按后退按钮从片段返回DrawerActivity 时,我最终都会退出应用程序。我已经在论坛上搜索了三天,但没有找到任何解决方案。很沮丧,我愚蠢地删除了我的代码,所以我现在不能真正展示它。谁能简单地向我解释我应该如何使用后退按钮退出片段并返回我的主要活动?

当前情况: DrawerActivity 包含八个片段,彼此独立。让我们称它们为片段 A 到 H。当我转到片段 A 时,我应该能够打开 navigationDrawer 并前往从 B 到 H 的任何其他片段。但是,按下后退按钮时,我也应该能够返回抽屉活动的主页。

我尝试过但不起作用的事情是
1.使用onBackPressed和popBackStack。
2. 创建自定义监听器。
3.使用fragmentTransaction。

【问题讨论】:

  • to go back to the drawer activity's main page 你的意思是回到第一个片段还是回到活动?
  • 我的意思是回到活动,因为片段是活动的一部分,对吧?例如,如果我在活动页面上显示“HELLO”,然后我转到片段,然后按回,我应该可以再次看到“HELLO”。
  • @CannonBaller9Pin 您是否在 xml 文件中定义了“HELLO”TextView(或您用来显示文本的任何 View)?
  • @M.S.我只是以“HELLO”为例。假设我的主要活动是空白的。它包含从抽屉中的三个选项启动的三个片段。假设我单击第一个选项。现在,我按下后退按钮。我不想直接退出应用程序,而是想回到应用程序显示的第一页,即空白的主活动页面。
  • @CannonBaller9Pin 您是否想分离或删除 Fragment?

标签: android android-activity navigation-drawer


【解决方案1】:

我不敢相信我是多么愚蠢。当我突然意识到抽屉活动中的第一个片段始终是默认片段时,我正在手机上使用我的 Gmail 应用程序,并且应用程序应该始终在按下后退按钮时恢复到它。我在想的是当按下返回时抽屉活动会回到原始状态,但我没有考虑到片段是活动本身的一部分这一事实。 谢谢大家试图理解我的问题,这根本不是问题......似乎我不由自主地学到了一些东西。

【讨论】:

    【解决方案2】:

    您是否尝试过在不调用超类方法的情况下覆盖 onBackPressed()? (这样你就可以防止完成()被调用。)

    @Override
    public void onBackPressed() {
        //show Fragment A
    }
    

    在没有“super.onBackPressed()”的情况下调用它,它应该可以工作。

    【讨论】:

    • 我不想从当前片段返回另一个片段。我想回到启动片段的活动。
    【解决方案3】:

    您必须像这样将您的片段添加到 android back Stack:

     getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.your_container,fragment,fragment.TAG)
                .addToBackStack(null)
                .commit();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多