问题描述
我有以下问题:我有一个用 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();
}