Android 工作室更改启动 activity 仅一次

Android studio change startup activity only once

我正在开发一个带有导航抽屉的 Android 应用程序:用户打开该应用程序和一个教程(一个带有寻呼机滑动片段的 activity,称为 ScreenSlideActivity.java ) 弹出;当用户完成滑动教程时,他按下 "finish" 按钮导致 MainActivity 初始化(创建 drawerLayout、drawerToggle 等)

我需要做的是在应用首次启动后打开教程 activity 一次。

我已经在主 Activity:

中尝试使用此代码
if (savedInstanceState == null) {
            SelectItem("tutorial");
}

确保 ScreenSlideActivity.java 立即启动。这个解决方案的问题是,当打开教程时,我无法再从那里访问 MainActivity.java,无论是从 "up" 按钮还是从教程最后一页的 "finish" 按钮,可能是因为某种原因我不再有 main 作为父 activity。

然后我尝试了此解决方案 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 了)同时我只想显示一次。

我还能做什么?

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

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

    MainsActivity -> ScreenSlideActivity
    
  3. 当用户按下完成按钮时,您可以在 ScreenSlideActivity 上调用 finish() 方法,这将从堆栈中删除 activity 并恢复您的 MainActivity。

如果是第一次打开应用程序,您可以使用 SharedPreferences check/set

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

   }

}

这里有类似的问题: