2016-02-24 138 views
1

我有兩個活動,一個活動是「AppIntro」,另一個是「主頁」。我想一次顯示「AppIntro」,然後在應用程序啓動時直接顯示到主頁上。自動更改開始另一個活動的活動

有一種方法來處理來自activity.java的意圖過濾器。

<activity 
     android:name=".DefaultIntro" 
     android:label="@string/title_activity_default_intro" 
     android:theme="@style/FullscreenTheme"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.Launcher"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

回答

0

您可以將AppIntroActivity中的布爾標誌保存爲false。

當您第一次打開此活動時,該標記爲false並且活動將加載。

當你從這個活動移動到另一個然後設置標誌爲真。

隨後返回到AppIntroActivity,如果該標誌爲true,則立即移動到第二個活動。

private SharedPreferences sharedPreferences; 

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
final boolean hasOpenedBefore = sharedPreferences.getBoolean("HASOPEN", false); 

if(hasOpenedBefore){ 
// move immediately to the next Activity 
// secondly, remove it from the top activity stack 
} 
0

我不認爲有任何方法來操縱清單文件中定義的意圖過濾器。當您打開DefaultIntro活性保存SharedPreference一個布爾值,並將其設置爲false

  • 下一次以後檢查這個值,如果它是false直接跳轉到下一個活動沒有設置它的佈局,你可以做到這一點

    DefaultIntro.javaonCreate

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    Boolean showIntro = prefs.getBoolean("showIntro", true); 
    if(showIntro) 
    { 
        SharedPreferences.Editor editor = prefs.edit(); 
        editor.putBoolean("showIntro", false); 
        editor.commit(); 
    } 
    else 
    { 
        Intent intent = new Intent(this, MainActivity.java); 
        startActivity(intent); 
        finish(); 
    } 
    
  • 相關問題