我已閱讀了一些文章(以及其他地方),介紹瞭如何在啓動應用程序時動態選擇要顯示的活動。下面是我的代碼: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成爲一個單一的實例活動(這樣可以避免在打開另一個時打開另一個異常並關閉頂部,然後在堆棧中的下一個控件上使用控件)。 –