6

我正在使用 aLocalActivityManager在不同的选项卡中进行活动,当我从一个选项卡切换到另一个选项卡时,我会启动Activity与所选选项卡相对应的活动。我的问题很简单:

如果我单击选项卡 1,我创建intent11并第一次调用方法onCreate(Bundle emptyBundle)Activity1如果我单击选项卡 2,我将创建并调用intent2该方法。onCreate()然后,当我单击 tab1, I createintent12时,该方法onCreate(Bundle emptyBundle)未被调用但onResume()被调用(正常行为)。

intent11我在and中添加了特殊的附加内容intent12来创建Activity1,所以我使用getIntent().getExtras().

我的问题是:我第二次去tab1的时候,intent12是用来启动的Activity,结果getIntent()还是intent11。所以我无法检索设置的附加内容intent12,我只能检索设置的附加内容intent11

我究竟做错了什么 ?我应该避免在意图中加入 extras() 吗?谢谢你。

谢谢你。

PS:目前,我设置了一个特殊标志来强制调用 onCreate(),但我确信这不是这样做的好方法。

4

3 回答 3

6

我相信你正在寻找的是在这里: https ://developer.android.com/reference/android/app/Activity.html#onNewIntent%28android.content.Intent%29

onNewIntent(Intent newIntent) 允许您使用最新的意图覆盖用于创建/恢复应用程序的先前意图。

于 2012-07-23T17:41:30.970 回答
1

不,您应该仍然可以放置附加功能,但我想知道在您创建新意图时附加功能是否会被“覆盖”,因此我建议您尝试以下操作:

将您的附加内容放入您创建的第一个意图的捆绑包中,然后在创建下一个意图之前将您的捆绑包设置为捆绑包中可能已经存在的任何内容

Bundle bundle = getResultExtras(false);

然后你可以创建你的新意图,然后当你准备好从包中取出数据时,你可以做

Bundle bundle = getResultExtras(false);

再次然后像往常一样从捆绑包中获取数据,只需确保您放入 Intent1 的附加项与您放入 Intent2 的附加项的键名不同

希望能有所帮助。

如果您需要更具体的帮助,发布您的代码可能会很有用。

于 2011-07-26T17:32:26.530 回答
1

在 Xamarin.Android / Monotouch 中,我刚刚将以下方法添加到我的 Activity 中,并且运行顺利。

    protected override void OnNewIntent(Intent intent)
    {
        base.OnNewIntent(intent);
        Intent = intent;
    }

该原理在 Native Android 中也应该可以正常工作。

于 2016-09-13T08:09:16.887 回答