【问题标题】:Android Kotlin get the count of the BackStack in a second ActivityAndroid Kotlin 在第二个 Activity 中获取 BackStack 的计数
【发布时间】:2021-01-21 14:53:14
【问题描述】:

我有以下问题:我有一个用 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 的值?

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

感谢您的帮助!

【问题讨论】:

  • 你能提供一个片段交易的例子吗?

标签: java android kotlin android-activity back-stack


【解决方案1】:

您正在尝试获取 fragment 后堆栈条目计数,同时您处于活动状态。因此,由于您没有分片,因此分片的回栈计数为 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();
}

【讨论】:

  • 感谢您的回答。在我的两个活动中,我都有多个片段。
猜你喜欢
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
相关资源
最近更新 更多