2011-09-03 57 views
3

我只需要在首次啓動應用程序時顯示一個SecondActivity。我像這樣實現了它(見下文),但我並不喜歡解決方案,因爲我需要在onResume()上擴展布局,因爲如果我沒有,我點擊backback硬件按鈕SecondActivity時,我沒有空的Activity第一次顯示活動解決方案

public class TestActivity extends Activity { 
    public static final String PREFS_NAME = "MyPrefsFile"; 
    public static final String FIRST_RUN = "FirstRun"; 

    SharedPreferences sharedPreferences; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     sharedPreferences = getSharedPreferences(PREFS_NAME, 0); 

     if (sharedPreferences.getBoolean(FIRST_RUN, false)) { 
      setContentView(R.layout.main); 
     } else { 
      Intent i = new Intent(this, Second.class); 
      startActivity(i); 
     } 
    } 


    @Override 
    protected void onResume() { 
     super.onResume(); 
     setContentView(R.layout.main); 
    } 
} 

Second Activity我只是把標誌FirstRun爲true。

回答

4

在第一Activity呼叫finish()您撥打電話到startActivity(i)

等之後初始化活動這...

if (sharedPreferences.getBoolean(FIRST_RUN, false)) { 
    setContentView(R.layout.main); 
} else { 
    Intent i = new Intent(this, Second.class); 
    startActivity(i); 
    finish(); 
} 

然後,您可以從onResume()刪除setContentView(...)

2

的百威我能想到的是具有不具有任何佈局,只是決定哪些活動來運行第一

0

如果你想要的是防止用戶返回到活動中,添加了「noHistory」標誌在你的清單文件,如:

<activity android:name=".SecondActivity" android:noHistory="true"> 

如果這是你的「閃屏」活動,並且只需要在應用程序啓動時顯示,請執行以下操作:

<activity android:name=".SecondActivity" android:noHistory="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
相關問題