gpt4 book ai didi

java - TabHost 内的 Activity 未获得 onNewIntent

转载 作者:太空宇宙 更新时间:2023-11-04 14:31:31 25 4
gpt4 key购买 nike

正如文档所述,如果该 Activity 在 list 中设置了 launchMode="singleTop",则 Intent 将通过 onNewIntent 回调传入。

当 TabHost 启动 Activity 时,我无法获得此行为。不调用 onNewIntent,而是调用 Activity 的 onCreate 方法,从而在 Activity 堆栈顶部生成一个新的 Activity 实例。

这是我用于启动 Intent 的代码:

// create the TabHost that will contain the Tabs
tabHost = (TabHost)findViewById(android.R.id.tabhost);


TabSpec tab1 = tabHost.newTabSpec("First Tab");
TabSpec tab2 = tabHost.newTabSpec("Second Tab");
TabSpec tab3 = tabHost.newTabSpec("Third tab");

// Set the Tab name and Activity
// that will be opened when particular Tab will be selected
tab1.setIndicator("Tab1");
Intent intent = new Intent(this, WhenLogin.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|
Intent.FLAG_ACTIVITY_SINGLE_TOP);
tab1.setContent(intent);

还有其他人遇到过这个问题吗?如果是这样,他们找到解决方案了吗?

最佳答案

TabActivity 以及将 Activity 放入选项卡中的一般方法已被弃用超过 3.5 年。在此之前很长一段时间以来,许多专家都警告开发人员远离它。请使用现代选项卡解决方案,例如带有选项卡式指示器的 ViewPagerFragmentTabHost,甚至是使用 Views 的普通 TabHost 用于选项卡。

As the documentation says if that activity has set launchMode="singleTop" in the manifest, the intent will come in through the onNewIntent callback.

这仅适用于通过 startActivity() 启动的 Activity (以及可能 startActivityForResult(),尽管将其与 结合使用singleTop 让我担心)。

Instead of calling onNewIntent, the activity's onCreate method is called, resulting in a new instance of the activity on top of the activity stack.

“Activity 的新实例”不在 Activity 堆栈上,因为它不用作成熟的 Activity 。相反,UI 会从 Activity 中分离出来,并作为选项卡放入您的 TabActivity 中。

关于java - TabHost 内的 Activity 未获得 onNewIntent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26087609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com