我正在以这种方式开发一个带有导航抽屉的Android应用程序:用户打开应用程序,弹出一个Tutorial(带有寻呼机滑动片段的活动,名为ScreenSlideActivity.java);当用户完成滑动教程时,他按下"完成"导致MainActivity初始化的按钮(创建drawerLayout,drawerToggle等)
我需要做的是在应用程序首次启动后立即打开Tutorial活动。
我已尝试在主要活动中使用此代码:
if (savedInstanceState == null) {
SelectItem("tutorial");
}
确保立即启动ScreenSlideActivity.java。这个解决方案的问题在于,当教程打开时,我无法再访问MainActivity.java,而不是来自" up"不是来自教程的最后一页" s"完成"按钮,可能是因为出于某种原因我不再将主要作为父活动了。
然后我尝试了此解决方案change application's starting activity - 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),而我想做的只是显示一次。
我还能做什么?
答案 0 :(得分:1)
我通常处理的临时屏幕与您的第一个解决方案类似:
如果是第一次,则为ScreenSlideActivity类启动一个没有特定标志的新活动。您的MainActivity将在堆栈中:
MainsActivity -> ScreenSlideActivity
当用户按下结束按钮时,您可以调用ScreenSlideActivity上的finish()方法,该方法将从堆栈中删除活动并恢复您的MainActivity。
答案 1 :(得分:1)
您可以使用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
}
}