正如文档所说,如果该活动设置了launchMode =" singleTop"在清单中,意图将通过onNewIntent回调进入。
当TabHost启动活动时,我无法获得此行为。调用活动的onCreate方法而不是调用onNewIntent,从而在活动堆栈顶部生成活动的新实例。
这是我启动意图的代码:
// 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);
还有其他人有这个问题吗?如果是这样,他们找到了解决方案吗?
答案 0 :(得分:0)
TabActivity
以及将活动置于标签中的一般方法已被弃用超过3。5年。在此之前的很长一段时间里,许多专家都警告开发人员远离它。请使用现代标签解决方案,例如ViewPager
带标签指示符,或FragmentTabHost
,或使用TabHost
Views
标签。
正如文档所说,如果该活动在清单中设置了launchMode =“singleTop”,则意图将通过onNewIntent回调进入。
仅适用于通过startActivity()
启动的活动(以及可能 startActivityForResult()
,但与singleTop
结合使用会让我担心)。
调用活动的onCreate方法,而不是调用onNewIntent,从而在活动堆栈顶部生成活动的新实例。
“活动的新实例”不在活动堆栈上,因为它不会用作完整的活动。相反,用户界面会从活动中删除,并作为标签放入TabActivity
。