我有一个列表适配器,允许用户通过按其中一项来启动同一 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);
线。
关于java - 无限嵌套的评论。如何维护堆栈历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45870726/