Android Kotlin 在第二个 Activity 中获取 BackStack 的计数

问题描述

我有以下问题:我有一个用 Kotlin 编写的 android 应用程序。

该应用程序有两个活动。 从第一个导航到第二个像这样:

val intent = Intent(firstActivity,SecondActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)
firstActivity?.finish()

在第二个活动中,我像这样覆盖了 onBackpressed 方法

override fun onBackpressed() {
        val count = supportFragmentManager.backStackEntryCount
        if(count == 0) {
            // Dialog to ask the user if he want to quit the application
        else{
            super.onBackpressed()
        }
    }

但是当我在第二个活动中按下后退按钮时,每次 BackStack 的计数为 0。 当我删除 if 语句并且只调用 super.onBackpressed() 时,Activity 中的片段被设置回最后一个片段,所以我假设 BackStack 正在工作。 如何获取 BackStackCount 的值?

编辑:在我的两个活动中,我都有多个片段。

感谢您的帮助!

解决方法

您正在尝试获取 fragment backstack 条目计数,同时您处于活动状态。因此,由于您没有碎片,因此碎片的 backstack 计数为 0。

您可以尝试像这样使用活动管理器:

ActivityManager m = (ActivityManager) ctx.getSystemService( ctx.ACTIVITY_SERVICE );
List<RunningTaskInfo> runningTaskInfoList =  m.getRunningTasks(10);
Iterator<RunningTaskInfo> itr = runningTaskInfoList.iterator();

while(itr.hasNext()){
    RunningTaskInfo runningTaskInfo = (RunningTaskInfo)itr.next();
    int id = runningTaskInfo.id;
    CharSequence desc= runningTaskInfo.description;
    int numOfActivities = runningTaskInfo.numActivities;
    String topActivity = runningTaskInfo.topActivity.getShortClassName();
}