java - 无限嵌套的评论。如何维护堆栈历史记录?

标签 java android android-intent

我有一个列表适配器,允许用户通过按其中一项来启动同一 Activity 的新实例:

Intent intent = new Intent(mContext, CommentActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(ParseConstants.KEY_OBJECT_ID, commentId);
intent.putExtra(ParseConstants.KEY_SENDER_ID, userId);
mContext.startActivity(intent);

问题是我已经在 CommentActivity 中了。如果我在启动新 Intent 之前编写 (Activity) mContext.finish() ,我将到达我想去的地方,但是当用户按下回键时,我将返回到堆栈中的第一个 Activity,这是MainActivity。我想返回之前的CommentActivity。我该如何解决这个问题?

list 条目:

<activity
            android:name=".activity.CommentActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:parentActivityName=".activity.CommentActivity"
            android:screenOrientation="portrait"
            tools:ignore="UnusedAttribute" />

最佳答案

当您使用 Intent.FLAG_ACTIVITY_NEW_TASK 标志时,您是在告诉 Android 启动一个新任务( Activity 集合)来包含新 Activity ,而不是将新 Activity 推送到与当前任务关联的堆栈上。

当 Activity 退出时,Task 为空,因此您从应用程序的根目录返回。

您想要做的是将新的 Activity 推送到现有堆栈上。这是默认行为,因此删除

 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

线。

Read more about Tasks and Activities here.

关于java - 无限嵌套的评论。如何维护堆栈历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45870726/

相关文章:

java - 如何在 Java 中使用 Restful Web 服务(Restful API)

android - 检测来电的目标电话号码是 SIM 1 还是 SIM 2?

android - 在 Gingerbread 上安装本地 .apk 文件的 Intent

Android - 打开电子邮件应用程序?

java - 如何在 main 中使用带有数组的 JOptionPane.showInputDialog 方法?

java - 将C代码转换为Java(分而治之的delaunay三角剖分算法)

JavaFXPorts jfxmobile-plugin 未找到特定于平台的目录

android - Google Play 没有传递完整的引用字符串?

android - 获取 Intent 选择器结果

android - 从 ListView 中获取所有勾选的项目