我已阅读了一些文章(以及其他地方),介绍了如何在启动应用程序时动态选择要显示的活动。下面是我的代码:Android:动态选择启动活动并不总是有效
AndroidManifest.xml中
<activity android:name=".StartupActivity"
android:theme="@android:style/Theme.NoDisplay">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
StartupActivity.java
public class StartupActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Intent intent;
if (RandomClass.getSomeStaticBoolean())
{
intent = new Intent(this, ActivityOften.class);
}
else
{
intent = new Intent(this, ActivityRare.class);
}
startActivity(intent);
finish();
}
}
两个ActivityOften和ActivityRare都在清单中声明(当然没有发射类别)和扩展ListActivity和活动分别。 99%的时间显示的第一个活动是基于RandomClass.getSomeStaticBoolean()的ActivityOften。
因此,第一次从图标启动我的应用程序时,我在StartupActivity.onCreate内部进行了分解。选择正确。但随后尝试启动应用程序(从快捷方式或应用程序菜单)再次显示ActivityOften。 StartupActivity类内不会出现进一步的中断。尽管我知道RandomClass.getSomeStaticBoolean()已经改变了值并且该ActivityRare应该出现,但第一个活动不断弹出。
任何想法?
谢谢,Merci,Gracias,Danke,Grazie! 肖恩
这是可能的,但每个活动类都有很多代码。我会尝试这种方法,但宁愿如果可能不将所有代码混合到一个文件中。感谢您的输入!将保持你的成功呢... –
最后,我决定去用ViewFlipper。 在http://www.androidpeople.com/android-viewflipper-example发现示例 我尝试了上述想法,但在切换视图时,Android引发了异常。有一种方法可以在充气和设置另一个之前删除视图。最终,我去了ViewFlipper。另外,我让我的Activity成为一个单一的实例活动(这样可以避免在打开另一个时打开另一个异常并关闭顶部,然后在堆栈中的下一个控件上使用控件)。 –