场景:
我有四个活动: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
达不到目的!(注:HomeActivity不是启动程序活动)
最佳答案
我认为您在进入“家庭活动”->“活动A”时完成了“家庭活动”。当您使用clear top标志时,您的家庭活动应该在堆栈中仍然存在。请确保您还没有完成家庭活动。
并将此代码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);
最重要的事情是不要完成您的活动
清除顶部方法的活动应保留在活动堆栈中
存在于您的设备中。
希望它能解决您的问题。