第一次显示活动解决方案

时间:2011-09-03 15:15:04

标签: android sharedpreferences

我只需要显示一个SecondActivity,并且只在第一次启动应用程序时显示。我实现了这个(见下文),但我真的不喜欢解决方案,因为我需要在onResume()上扩充布局,因为如果我不这样做,当我点击{{{}时,我会有空Activity 1}}硬件按钮位于back

SecondActivity

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设为真。

3 个答案:

答案 0 :(得分: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();
}

然后,您可以从setContentView(...)删除onResume()

答案 1 :(得分:2)

我认为最好的方法是让Init活动没有任何布局,只决定先运行什么活动

答案 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>