我知道我可以覆盖onKeyDown
方法,但我想要回来做两件事!
答案 0 :(得分:22)
<强> FirstActivity 强>
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
<强> SecondActivity 强>
int REQUEST_CODE = 123
Intent intent = new Intent(SecondActivity.this, ThirdActivity.class);
startActivityForResult(intent, REQUEST_CODE);
(为了使这个教学法在下面有更多的代码用于此活动)
<强> ThirdActivity 强>
@Override
public void onBackPressed() {
// Semi ugly way of supporting that back button takes us back two activites instead of the usual one.
setResultOkSoSecondActivityWontBeShown();
finish();
}
private void setResultOkSoSecondActivityWontBeShown() {
Intent intent = new Intent();
if (getParent() == null) {
setResult(Activity.RESULT_OK, intent);
} else {
getParent().setResult(Activity.RESULT_OK, intent);
}
}
SecondActivity(再次)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 123) {
if (resultCode == RESULT_OK) {
finish();
}
}
}
答案 1 :(得分:3)
我这样想:
A -> B -> C
A,B,C活动。
由于第一个onKeyDown()
将在C中执行而第二个应在B中执行,因此无法返回两次。
我不知道你为什么要这么做,但这里有一些选择。
也许你的C活动正在做一些不需要视图的事情,这就是你想要回来两次的原因。
使用意图。类似的东西:
Intent intent = new Intent(C.this, A.class);
startActivity(intent);
使用finishActivityFromChild()
。我从来没有尝试过,但看起来你可以用它来决定在B上做什么,这取决于C的结束方式。
答案 2 :(得分:0)
| * | 返回一个屏幕或结束活动:
finish();
| * | 返回多个屏幕:
您可以使用意图返回到您需要的屏幕,并使用标记来防止返回到同一屏幕:
Intent gotoScreenVar = new Intent(goFromScreenCls.this, goToScreenCls.class);
gotoScreenVar.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(gotoScreenVar);