场景:
我有四个 Activity :A、B、C 和 HomeActivity
。 A
是我的 launcher
Activity 。我正在使用 actionbarSherlock
,所以 A、B 和 C 在栏中有 menu
选项。
流程是:
A-> B-> C --**On submit in C**--> HomeActivity
现在,当我在 Home Activity 上按 Back
按钮时,它会返回到 activity B
,就像在 C
中单击 Submit 后一样,我正在使用
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
按钮的默认行为(即返回到按下菜单的 Activity )
关于如何做到这一点的任何见解都没有达到目的!
(注:HomeActivity 不是启动器 Activity )
最佳答案
我认为您在转到 Home Activity -> Activity A 时完成了 Home Acitivity。当您使用 clear top flag 时,您的 Home Activity 应该在您的堆栈中处于 Activity 状态。请确保您没有完成主页 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:
其他方式
编辑:
尝试把上面的代码放到Activity 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);
And Most Important thing Don't Finish your Activity A launcher Activity for Clear top method it should be in stack of Activity remain present in your device.
希望能解决您的问题。
关于java - Sherlock Activity 中的 Intent.FLAG_ACTIVITY_CLEAR_TOP 未达到目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16664974/