android - 从堆栈 onBackPressed 中删除两个活动?
问题描述
我有 3 个活动,A、B 和 C。A 打开 B,然后立即打开 C,所以我无法调用 finish();在打开 C 之前在 B 上。我尝试使用 FLAG_ACTIVITY_NO_HISTORY 标记 B,但是当从 C 按下返回时它仍然打开。所以,我想知道是否可以告诉活动 C 从堆栈 onBackPressed() 中删除当前和先前的活动。我不想通过覆盖 onBackPressed 来打开 C,因为这会破坏我的 backstack。有任何想法吗?
编辑:我不是从 B 打开 C。A 正在打开它们,因此我无法完成() B。
EDIT2:这是打开新活动的代码。(B 是 StandardInfoActivity,C 是 AddGradeActivity)。它们通过单击列表视图中的项目(两个不同的列表)打开。当我打开 C 时,另一个列表中相同项目的活动也会在下面打开 B。
//make listview items respond to clicks and open relevant activity
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// selected item
String standard = ((TextView) view).getText().toString();
// Launching new Activity on selecting single List Item
Intent i = new Intent(SubjectActivity.this, StandardInfoActivity.class);
// sending data to new activity
i.putExtra("standard", standard);
i.putExtra("subject", subjectId);
i.putExtra("subjectName", subject);
i.putExtra("level", level);
startActivity(i);
}
});
gradeView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent2, View view,
int position, long id2) {
// Launching new Activity on selecting single List Item
Intent j = new Intent(SubjectActivity.this, AddGradeActivity.class);
// sending data to new activity
j.putExtra("subjectId", subjectId);
j.putExtra("position", position);
j.putExtra("level", level);
j.putExtra("subject", subject);
startActivity(j);
}
});
解决方案
以下代码将删除 A 和 B 活动的所有后台堆栈,只需使用您开始活动的代码即可
Intent i = new Intent(context, activityRedirectClass);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
推荐阅读
- osgi - 在 OSGI 容器中启动 Apache Ignite 时出错
- git - Jenkins - 当 Jenkins 构建失败时阻止合并按钮
- uml - 扩展用例的正确表示法
- java - 输入“Q”时如何使Java程序退出,问题是默认输入变量是double
- python - 如何解决最大递归深度错误
- javascript - JavaScript 数组:有没有一种方法可以在拼接和过滤器之间进行交叉处理?
- google-container-registry - 是否可以在不在本地安装 docker 的情况下向谷歌云容器注册表中的图像添加标签?
- android - 如何使用 OpenCV 在 Android 中将原始图像转换为 RGB?
- php - 在 WooCommerce 3 中以编程方式仅设置特定产品的销售价格
- c# - 无法将类型“Program.Data.View”隐式转换为 System.linq.iqueryable
.