1

场景:

我有四个活动:A, B, C and HomeActivityA是我的launcher活动。我正在使用actionbarSherlock,所以 A、B 和 Cmenu在栏中有选项。

流程是:

 A-> B-> C --**On submit in C**--> HomeActivity

现在,当我按下BackHome Activity 上的按钮时,它会返回到activity B单击 Submit in 后C,正在使用

     Intent intent = new Intent(this, HomeActivity.class);
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );  //Shouldn't this clear A,B and C ??
    //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );
    startActivity(intent);
            finish();

但是我想仅在提交数据然后启动它时才保留在 HomeActivity 上。

此外,如果按下菜单按钮A,B,C,则会启动 HomeActivity,在这种情况下,我希望拥有Back按钮的默认行为(即返回按下菜单的活动)

关于如何做到这一点的任何见解都FLAG_ACTIVITY_CLEAR_TOP没有达到目的!

(PS:HomeActivity 不是启动器活动)

4

1 回答 1

1

我认为您在转到 Home Activity -> Activity A 时完成了 Home Acitivity。当您使用 clear top flag 时,您的 Home Activity 应该在您的堆栈中处于活动状态。请确保您没有完成家庭活动。

并将此代码 onKeyDown() 方法放在您的 Home Activity 中。

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.e("onkeyDown>>>>", "Called>>>>>");
            finish();
        }
        return super.onKeyDown(keyCode, event);
    } 

检查更多详细信息检查此链接:

另一种方式

编辑:

尝试将上述代码放入活动 A。

从您的代码中删除 finish() 方法,如下所示:

Intent intent = new Intent(this, HomeActivity.class);
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );  //Shouldn't this clear A,B and C ??
    //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );
    startActivity(intent);

最重要的事情不要完成您的活动清除顶部方法的启动器活动应该在活动堆栈中仍然存在于您的设备中。

希望它能解决你的问题。

于 2013-05-21T09:39:28.087 回答