[英]Android studio change startup activity only once
我正在開發一個帶有導航抽屜的Android應用程序:用戶打開該應用程序,然后彈出一個Tutorial(帶有尋呼機滑動片段的活動,稱為ScreenSlideActivity.java); 當用戶完成教程的滑動時,他按下“完成”按鈕,導致MainActivity初始化(創建抽屜布局,抽屜Toggle等)。
我需要做的是,在應用程序首次啟動后,僅一次打開Tutorial活動。
我已經在主活動中嘗試使用此代碼:
if (savedInstanceState == null) {
SelectItem("tutorial");
}
確保立即啟動ScreenSlideActivity.java。 該解決方案的問題在於,當打開教程時,從那里我將無法再訪問MainActivity.java,也無法從“上” botton或從教程的最后一頁的“完成”按鈕中訪問MainActivity.java,這可能是由於某種原因我不再將主要活動作為家長活動。
然后,我嘗試了此解決方案更改應用程序的啟動活動-Android修改清單xml文件。 添加:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
轉到ScreenSlideActivity。 該解決方案的問題在於它改變了我的項目的結構,使ScreenSlideActivity.java成為Main和Launching Activity(因此,從這里我將無法再訪問MainActivity),而我只想顯示一次即可。
我還可以做些什么?
我通常要處理的臨時屏幕類似於您的第一個解決方案:
如果是第一次,您將為ScreenSlideActivity類啟動一個新活動,而沒有特定的標志。 您的MainActivity將位於堆棧中:
MainsActivity -> ScreenSlideActivity
當用戶按下完成按鈕時,您可以在ScreenSlideActivity上調用finish()方法,該方法將從堆棧中刪除該活動並恢復您的MainActivity。
您可以使用SharedPreferences來檢查/設置是否是第一次打開應用程序
String preferences_name = "isFirstTime";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
firstTime();
}
...
public void firstTime(){
SharedPreferences sharedTime = getSharedPreferences(preferences_name,0);
if (sharedTime.getBoolean("firstTime",true))
{
//Your tutorial code
sharedTime.edit().putBoolean("firstTime",false).apply();
}
else
{
//When not using tutorial code
}
}
這里的類似問題: https : //stackoverflow.com/a/13237848/4555911
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.