Android工作室只更改一次启动活动

时间:2015-03-04 19:36:31

标签: java android android-activity android-studio app-startup

我正在以这种方式开发一个带有导航抽屉的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),而我想做的只是显示一次。

我还能做什么?

2 个答案:

答案 0 :(得分:1)

我通常处理的临时屏幕与您的第一个解决方案类似:

  1. 在您的MainActivity中检查是否是用户第一次启动应用程序。最常见的方法是使用SharedPreferences并检查布尔值是真还是假。
  2. 如果是第一次,则为ScreenSlideActivity类启动一个没有特定标志的新活动。您的MainActivity将在堆栈中:

    MainsActivity -> ScreenSlideActivity
    
  3. 当用户按下结束按钮时,您可以调用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

   }

}

这里有类似问题:https://stackoverflow.com/a/13237848/4555911