背部和背部的意图

时间:2014-03-31 12:42:41

标签: android

我(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。

1 个答案:

答案 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);
}

我希望这会帮助你。