从用于 onResume() 的 Intent 获取参数

发布于 2024-11-26 13:38:00 字数 921 浏览 2 评论 0原文

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

如果我单击选项卡 1,我会创建 intent11 并且第一次创建 Activity1 的方法 onCreate(Bundle emptyBundle)被称为。 如果我单击选项卡 2,则会创建 intent2 并调用 onCreate() 方法。 然后,当我单击 tab1 时,创建 intent12 ,不会调用方法 onCreate(BundleemptyBundle) ,而是调用 onResume() (正常行为)。

我在 intent11intent12 中添加了特殊的额外内容来创建 Activity1,因此我使用 getIntent().getExtras()< 访问它/代码>。

我的问题是:第二次进入tab1时,使用intent12来启动Activity,但是getIntent()的结果仍然是intent11。 所以我无法检索 intent12 中设置的 extras,只能检索 intent11 中设置的 extras。

我做错了什么?我应该避免将 extras() 放在意图中吗?谢谢。

谢谢。

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

I'm using a LocalActivityManager to have activities in different tabs, when I switch from a tab to another one, I start the Activity corresponding to the tab selected.
My problem is simple :

if I click on tab 1, I create intent11 and the first time, the method onCreate(Bundle emptyBundle) of Activity1 is called.
If I click on tab 2, I create intent2 and the method onCreate() is called.
Then, when I click on tab1, I create intent12 , the method onCreate(Bundle emptyBundle) is not called but onResume() is called (normal behavior).

I put special extras in the intent11 and intent12 to create Activity1, so I access it using getIntent().getExtras().

My problem is : the second time I go to the tab1, the intent12 is used to start the Activity, but the result of getIntent() is still intent11.
So I can't retreive the extras set in intent12, I can only retreive the extras set in intent11.

What am I doing wrong ? Should I avoid putting extras() in the intents ? Thank you.

Thank you.

PS : for the moment, I set a special flag to my intent to force to call onCreate(), but I'm sure it's not the good way of doing it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风吹短裙飘 2024-12-03 13:38:00

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

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

I believe what you are looking for is here:
https://developer.android.com/reference/android/app/Activity.html#onNewIntent%28android.content.Intent%29

onNewIntent(Intent newIntent) allows you to override the previous intent that was used to create/resume the app with the newest intent.

莳間冲淡了誓言ζ 2024-12-03 13:38:00

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

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

这个原理在原生 Android 中也应该可以正常工作。

In Xamarin.Android / Monotouch I just added the following method to my Activity and it worked smoothly.

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

The principle should work fine also in Native Android.

江南月 2024-12-03 13:38:00

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

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

Bundle bundle = getResultExtras(false);

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

Bundle bundle = getResultExtras(false);

再次执行此操作,然后像平常一样获取数据会从捆绑包中,只需确保您在 Intent1 中放置的额外内容与您在 Intent2 中放置的额外内容没有相同的键名称,

希望对一些人有所帮助。

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

no you should be able to still put the extras but I'm wondering if the extras are getting 'overwritten' when you are creating the new intents so I suggest trying this:

Put your extras into the bundle for the first intent you create, then before creating the next intent set your bundle to whatever might be in the bundle already by doing

Bundle bundle = getResultExtras(false);

Then you can create your new intent then when you are ready to get your data out of the bundle you can do

Bundle bundle = getResultExtras(false);

again and then get your data like you normally would from the bundle, just make sure that the extras your put in Intent1 don't have the same key name as the extras you put in Intent2

hope that helps some.

if you need more specific help it might be useful to post your code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文