首页 > 解决方案 > 从堆栈 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);
        }
    });

标签: android

解决方案


以下代码将删除 A 和 B 活动的所有后台堆栈,只需使用您开始活动的代码即可

 Intent i = new Intent(context, activityRedirectClass);

          i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

          startActivity(i);

推荐阅读