Sar*_*ara 11 android android-activity
我知道我可以覆盖这个onKeyDown
方法,但是我想回去做两件事!
rip*_*per 22
FirstActivity
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
SecondActivity
int REQUEST_CODE = 123
Intent intent = new Intent(SecondActivity.this, ThirdActivity.class);
startActivityForResult(intent, REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
(为了使这个教学法,下面有更多的代码用于此活动)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
SecondActivity(再次)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 123) {
if (resultCode == RESULT_OK) {
finish();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我是这样想的:
A -> B -> C
Run Code Online (Sandbox Code Playgroud)
A、B、C 活动。
你不能执行两次 back,因为第一次onKeyDown()
将在 C 中执行,第二次应在 B 中执行。
我不知道你为什么要尝试这样做,但这里有一些选择。
也许您的 C 活动正在做一些不需要视图的事情,这就是您想要返回两次的原因。
使用意图。就像是:
Intent intent = new Intent(C.this, A.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)使用finishActivityFromChild()
。我从未尝试过,但看起来你可以用它来根据 C 的结束方式来决定对 B 做什么。
归档时间: |
|
查看次数: |
8216 次 |
最近记录: |