7

我的应用程序中有活动 A、B 和 C,它们按此顺序流动。如果我在 C 中实现向上按钮,我希望它返回到 B。Eclipse 生成的代码存根是这样的:

@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
    switch (item.getItemId())
    {
        case android.R.id.home:
            // This ID represents the Home or Up button. In the case of this
            // activity, the Up button is shown. Use NavUtils to allow users
            // to navigate up one level in the application structure. For
            // more details, see the Navigation pattern on Android Design:
            //
            // http://developer.android.com/design/patterns/navigation.html#up-vs-back
            //
            NavUtils.navigateUpFromSameTask(this);
            return true;
    }

    return super.onOptionsItemSelected(item);
}

但是,B 期望在其 onCreate 方法中从 A 传递额外内容。B 和 C 之间的关系是 C 允许用户设置一些影响 B 如何显示的设置。我目前正在处理在 onPause() 中保存 C 中的更改。当用户按下 Up 而不是调用 navigateUpFromSameTask(this) 时,我应该只完成() C 吗?

4

2 回答 2

8

如果您要从 C 返回到 B ,如果您使用标准启动模式,您的活动将再次创建。onSaveInstanceState不会(可靠地)工作

将活动 B 的启动模式声明为:

android:launchMode="singleTop"

在您的 AndroidManifest.xml 中,如果您想返回您的活动。请参阅文档此处的解释

于 2013-06-27T12:17:21.307 回答
0

我相信你有类似的问题?本质上,如果您要从 C 返回到 B,则可能需要再次调用 onCreate()。这意味着您从意图中获得的额外内容将消失,因此您必须使用类似onSaveInstanceState的内容来存储它们。

于 2013-06-21T15:45:11.740 回答