我有两个活动,一个活动是“AppIntro”,另一个是“主页”。我想一次显示“AppIntro”,然后在应用程序启动时直接显示到主页上就不会显示它。
有一种方法可以从activity.java中操作intent-filters。
<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 :(得分:0)
您可以将AppIntroActivity中的布尔标志保存为false。
首次打开此活动时,该标志为false,活动将加载。
当您从此活动移至另一个活动时,请将该标志设置为true。
在后续返回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
}
答案 1 :(得分:0)
我认为没有办法操纵清单文件中定义的意图过滤器。你可以这样做
DefaultIntro
活动时,在SharedPreference
中保存一个布尔值并将其设置为false
false
直接跳转到下一个活动而不设置其布局。 DefaultIntro.java
onCreate
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();
}