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

use*_*302 6 android onresume xamarin.android

我正在使用a LocalActivityManager来在不同的选项卡中进行活动,当我从一个选项卡切换到另一个选项卡时,我开始Activity对应于所选的选项卡.我的问题很简单:

如果我点击选项卡1,创建intent11并在第一时间,该方法onCreate(Bundle emptyBundle)Activity1调用.如果我单击选项卡2,我创建intent2onCreate()调用该方法.然后,当我单击tab1,我创建时intent12,该方法onCreate(Bundle emptyBundle)未被调用但onResume()被调用(正常行为).

我把在特殊的配件intent11intent12创造Activity1,所以我用访问它getIntent().getExtras().

我的问题是:我第二次去tab1,intent12用来启动Activity,但结果getIntent()仍然是intent11.所以我无法撤回设置的额外内容intent12,我只能检索设置的额外内容intent11.

我究竟做错了什么 ?我应该避免在意图中加入额外的()吗?谢谢.

谢谢.

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

小智 6

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

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


Wol*_*cow 1

不,您应该仍然可以添加额外内容,但我想知道当您创建新意图时额外内容是否会被“覆盖”,所以我建议尝试以下操作:

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

Bundle bundle = getResultExtras(false);
Run Code Online (Sandbox Code Playgroud)

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

Bundle bundle = getResultExtras(false);
Run Code Online (Sandbox Code Playgroud)

再次然后像平常一样从捆绑包中获取数据,只需确保您放入 Intent1 中的额外内容与您放入 Intent2 中的额外内容不具有相同的键名称

希望对一些人有帮助。

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