情景:
我有四项活动:A, B, C and HomeActivity
。 A
是我的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不是发射器活动)
答案 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的堆栈中保留 存在于您的设备中。
希望它能解决你的问题。