我(iOS人)需要一些帮助来了解在Android中回击或向上时发生的事情。
我们假设这个设置:
ListActivity A --> ListActivity B --> ListActivity C
如果B有以下代码行:
myID = this.getIntent().getExtras().getInt("myID");
如果我没有,那么在C中回击或向上将会崩溃:
@Override
public void onBackPressed() {
super.onBackPressed();
Intent backIntent = new Intent(this, B.class);
backIntent.putExtra("myID", myID);
startActivity(backIntent);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent backIntent = new Intent(this, B.class);
backIntent.putExtra("myID", myID);
startActivity(backIntent);
break;
}
return true;
}
在ListActivity C中,当我向后或向上按时,我希望:ListActivity C被销毁,如果ListActivity B的实例仍然存在于堆栈中,我想显示它,如果不是我想重新创建它。现在我认为这是后退按钮的行为,但如果我按下它会创建一个新的ListActivity B实例,它位于ListActivity C之上,所以如果按下后我按下我最后在ListActivity CI中想要回来在ListActivity A。
答案 0 :(得分:0)
您是否尝试将singleTop添加到AndroidManifest中的Activity B?
如果活动的实例已存在于目标的顶部 任务,系统通过调用将意图路由到该实例 它的onNewIntent()方法,而不是创建一个新的实例 活性。
来源:http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
另外,如果你不想在下一次活动中回到活动C,请不要忘记完成活动C.
@Override
public void onBackPressed() {
super.onBackPressed();
goBack();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
goBack();
break;
}
return true;
}
private void goBack(){
finish();
Intent backIntent = new Intent(this, B.class);
backIntent.putExtra("myID", myID);
startActivity(backIntent);
}
我希望这会帮助你。