TabHost中的活动没有获得onNewIntent

时间:2014-09-28 17:30:49

标签: java android android-intent nfc

正如文档所说,如果该活动设置了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);

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

1 个答案:

答案 0 :(得分:0)

TabActivity以及将活动置于标签中的一般方法已被弃用超过3。5年。在此之前的很长一段时间里,许多专家都警告开发人员远离它。请使用现代标签解决方案,例如ViewPager带标签指示符,或FragmentTabHost,或使用TabHost Views标签。

  

正如文档所说,如果该活动在清单中设置了launchMode =“singleTop”,则意图将通过onNewIntent回调进入。

仅适用于通过startActivity()启动的活动(以及可能 startActivityForResult(),但与singleTop结合使用会让我担心)。

  

调用活动的onCreate方法,而不是调用onNewIntent,从而在活动堆栈顶部生成活动的新实例。

“活动的新实例”不在活动堆栈上,因为它不会用作完整的活动。相反,用户界面会从活动中删除,并作为标签放入TabActivity