如何使用后退按钮退出片段并返回到我的抽屉活动?

问题描述:

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

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

我试过哪些没有用的东西是
1.使用onBackPressed和popBackStack。
2.创建自定义侦听器。
3.使用fragmentTransaction。

+0

通过'回到你的意思是要回第一片段或到活动抽屉活动的主要page'? –

+0

我的意思是回到活动,因为片段是活动的一部分,对吧?例如,如果我在活动的页面上显示“HELLO”,那么我会转到该片段,然后向后按,我应该可以再次看到“HELLO”。 – CannonBaller9Pin

+0

@ CannonBaller9Pin您是否在xml文件中定义了“HELLO”TextView(或用于显示文本的任何View)? –

您是否尝试过重写onBackPressed()而不调用超类方法? “)super.onBackPressed(”(这样就防止面漆()被调用。)

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

调用它没有,它应该工作。

+0

我不想回到当前片段的另一个片段。我想回到启动片段的活动。 – CannonBaller9Pin

我不敢相信我是多么愚蠢。当我突然意识到抽屉活动中的第一个片段始终是默认片段时,我正在手机上使用我的Gmail应用程序,并且该应用程序应始终在后退按钮按下时恢复为它。我当时的想法是,当按下后退时,抽屉活动会回到原来的状态,但我没有说明碎片是活动本身的一部分。 谢谢大家,试图理解我的问题,这根本不是问题......看起来,尽管我自己,我仍然学到了一些东西。

您必须将片段添加到Android后退堆栈是这样的:

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