使用 onBackPressed 仅从第一个片段退出 App

Posted

技术标签:

【中文标题】使用 onBackPressed 仅从第一个片段退出 App【英文标题】:Exit from App only from the 1st fragment using onBackPressed 【发布时间】:2016-09-20 01:35:13 【问题描述】:

我的 MainActivity 在导航抽屉中有 6 个片段。现在,每当我处于 6 个片段中的任何一个片段中时,如果我按下后退按钮,我的应用程序就会退出。我只想从第一个片段中退出。如果我在其他片段中,那么如果我按回,我希望它到达第一个片段,如果我再次按回,我想从那里退出。 当片段不在第一个位置时,我必须将片段替换为第一个片段。我知道。但是我究竟如何才能在 onBackPressed 中实现整体呢? 请帮忙 !!提前致谢。

【问题讨论】:

这个***.com/questions/5448653/… 可以帮助你 参考以下链接返回您的片段,***.com/questions/9702216/… 和 ***.com/questions/7919681/… 【参考方案1】:

覆盖onBackPress 方法并添加此代码;

public void onBackPressed()
        int count = getFragmentManager().getBackStackEntryCount(); // if stack count is 0, it means no fragment left to pop back stack
        if (count = 0) 
            finish();
         
    

【讨论】:

【参考方案2】:

您可以通过实例获取片段名称,我们可以检查它是否在主片段中。将此代码粘贴到主活动类的 onBackPressed 方法中。

Fragment  f = getSupportFragmentManager().findFragmentById(R.id.frame_container);

            /**
             * Compare the instances based on fragment name to change the action bar
             */

            if (f instanceof HomeFragment) 
                finish();
                System.exit(0);
             else 
                super.onBackPressed();
            

【讨论】:

以上是关于使用 onBackPressed 仅从第一个片段退出 App的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 片段中使用 onBackPressed()

片段的条件自定义 OnBackPress

onBackPressed 上的 Android 片段 NullPointerException

onbackpressed 数据未显示在片段中

在onBackPressed之外的活动中获取当前片段?

如何在导航控件片段中关闭导航 DrawerLayout onBackPressed