簡體   English   中英

Android Studio僅更改一次啟動活動

[英]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),而我只想顯示一次即可。

我還可以做些什么?

我通常要處理的臨時屏幕類似於您的第一個解決方案:

  1. 在您的MainActivity中,檢查是否是用戶首次啟動該應用程序。 最常見的方法是使用SharedPreferences並檢查布爾值是true還是false。
  2. 如果是第一次,您將為ScreenSlideActivity類啟動一個新活動,而沒有特定的標志。 您的MainActivity將位於堆棧中:

     MainsActivity -> ScreenSlideActivity 
  3. 當用戶按下完成按鈕時,您可以在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM