SherlockActivity中的Intent.FLAG_ACTIVITY_CLEAR_TOP无法满足目的

时间:2013-05-21 08:02:21

标签: java android android-intent actionbarsherlock

情景:

我有四项活动:A, B, C and HomeActivityA是我的launcher活动。我使用actionbarSherlock,因此A,B和C在栏中有menu选项。

流程是:

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

现在,当我在“家庭活动”上按Back按钮时,在activity B点击“提交”后,它将返回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无法满足目的!

(P.S。:HomeActivity不是发射器活动)

1 个答案:

答案 0 :(得分:1)

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

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

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

查看更多详情,请查看此link:

其他方式

编辑:

尝试将上述代码放入活动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);
  

最重要的是不要完成你的活动一个启动器   Clear顶级方法的活动应该在Activity的堆栈中保留   存在于您的设备中。

希望它能解决你的问题。