从用于onResume()的意图中获取参数

6
我正在使用LocalActivityManager在不同的选项卡中拥有活动,当我从一个选项卡切换到另一个选项卡时,我会启动对应于所选选项卡的Activity。我的问题很简单:
如果我点击选项卡1,我创建intent11,第一次调用Activity1onCreate(Bundle emptyBundle)方法。 如果我点击选项卡2,我创建intent2并调用onCreate()方法。 然后,当我点击选项卡1时,我创建intent12onCreate(Bundle emptyBundle)方法不会被调用,但是onResume()方法会被调用(正常行为)。
我在intent11intent12中放置了特殊的extras来创建Activity1,因此我使用getIntent().getExtras()来访问它。
我的问题是:第二次进入选项卡1时,intent12用于启动Activity,但getIntent()的结果仍然是intent11。 因此,我无法检索在intent12中设置的extras,我只能检索在intent11中设置的extras。
我做错了什么?我应该避免在意图中放置extras()吗?谢谢。
PS:目前,我为我的意图设置了一个特殊标志,以强制调用onCreate(),但我确定这不是正确的方法。

如果您能在这里放置您的代码片段,那将非常有帮助。 - Kristiono Setyadi
3个回答

6

2
在Xamarin.Android / Monotouch中,我刚刚向我的Activity添加了以下方法,它运行得非常顺畅。
    protected override void OnNewIntent(Intent intent)
    {
        base.OnNewIntent(intent);
        Intent = intent;
    }

这个原则在本地Android中也应该能够正常工作。

1

不,你应该仍然能够放置额外的内容,但我想知道当你创建新意图时,这些额外的内容是否被“覆盖”,因此建议尝试以下操作:

将您的额外内容放入您创建的第一个意图的bundle中,然后在创建下一个意图之前,通过执行以下操作将您的bundle设置为可能已经存在于bundle中的任何内容

Bundle bundle = getResultExtras(false);

然后,您可以创建新的意图,当您准备好从捆绑包中获取数据时,可以执行以下操作

Bundle bundle = getResultExtras(false);

再次从bundle中获取数据,就像平常一样,只需确保Intent1中添加的额外信息与Intent2中添加的额外信息的键名不同即可。

希望这能有所帮助。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接