在单个片段中处理后退按钮 [英] handle back button in single fragment

查看:60
本文介绍了在单个片段中处理后退按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有导航抽屉的应用程序.当我启动该应用程序时,我在主屏幕(屏幕A)上显示的是"hello world",然后当我从导航抽屉中选择一个项目时,我会加载一个片段并获取"new hello world",然后当我选择一个从导航抽屉中的项目,我加载一个片段并获取你好,宇宙".但是由于所有这些都是通过1个单个片段发生的,所以当我按下设备后退按钮时,我应该获得如下所示的先前片段:

I have an application with navigation drawer. when i start the application, what i have on main screen (screen A) is "hello world" and then when i select an item from navigation drawer, i load a fragment and get "new hello world" and then again when i select an item from navigation drawer, i load a fragment and get "hello universe". But since this is all happening via 1 single fragment, when i press the device back button i should get previous fragment like below:

你好宇宙">按回退>新你好世界">按回退>你好世界"

"hello universe" >press back> "new hello world" >press back> "hello world"

我该如何处理?

注意:

NOTE:

在更改我尝试过的片段时

while changing the fragment i have tried

fragmentManager.beginTransaction().replace(R.id.mainContent, fragment).commit();

然后我更改为:

fragmentManager.beginTransaction().add(R.id.mainContent, fragment).addToBackStack("tag").commit();

,但没有任何效果.按下后退按钮后,应用程序退出. 是因为同一片段一次又一次地被另一个内容替换了吗?

but nothing worked. The app exits on back button press. Is it due to the same fragment getting replaced by another content again and again?

推荐答案

您尝试的第二种方法是正确的.尝试通过覆盖onBackPressed()方法在BackPressed()上调用popBackStack().

The second approach you tried is correct.Try to call popBackStack() on BackPressed() by overriding onBackPressed() method.

 @Override
public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStack();
    } else if (getFragmentManager().getBackStackEntryCount() == 0) {
        super.onBackPressed();
    }
}

这篇关于在单个片段中处理后退按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆