1

我已经根据此处的 Google 建议实施了向上按钮:http: //developer.android.com/training/implementing-navigation/ancestral.html

像这样:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        // This is called when the Home (Up) button is pressed
        // in the Action Bar.
    case android.R.id.home:
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(
                Intent.FLAG_ACTIVITY_CLEAR_TOP |
                Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
        finish();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

这段代码最大的问题是 MainActivity 是从一个新实例启动的。我想打开以前的 MainActivity 实例而不重新启动它。

由于这个活动非常繁重,我不想每次用户按下向上按钮时都创建一个新活动。

我试图删除标志 FLAG_ACTIVITY_NEW_TASK 并使用所有可以想象的标志进行了很多操作,但我没有成功创建一个按钮,可以将 MainACtivity 恢复到以前的状态。

任何帮助将不胜感激。

4

1 回答 1

0

您正在寻找的是旗帜:

Intent.FLAG_ACTIVITY_REORDER_TO_FRONT

哪个会做你想做的事 - 如果活动已经存在于任务和堆栈中,那么它将被带到前面,否则它将被重新创建。

请记住,如果 Activity 已被 GC 销毁,那么无论如何都会重新创建它,并且某些 UI 组件可能会根据您获得初始化代码的位置而重置(我不认为这onCreate()会被调用,但onResume()肯定会将会

于 2013-05-15T13:26:31.423 回答