Java Android studio仅更改一次启动活动
我正在开发一个Android应用程序,导航抽屉是这样工作的:用户打开应用程序,弹出一个教程(一个带有寻呼机滑动片段的活动,称为ScreenSlideActivity.java);当用户完成滑动教程时,他按下“完成”按钮,导致主活动的初始化(创建抽屉布局、抽屉切换等) 我需要做的是在应用程序第一次启动后只打开一次教程活动 我在主要活动中尝试了以下代码:Java Android studio仅更改一次启动活动,java,android,android-activity,android-studio,app-startup,Java,Android,Android Activity,Android Studio,App Startup,我正在开发一个Android应用程序,导航抽屉是这样工作的:用户打开应用程序,弹出一个教程(一个带有寻呼机滑动片段的活动,称为ScreenSlideActivity.java);当用户完成滑动教程时,他按下“完成”按钮,导致主活动的初始化(创建抽屉布局、抽屉切换等) 我需要做的是在应用程序第一次启动后只打开一次教程活动 我在主要活动中尝试了以下代码: if (savedInstanceState == null) { SelectItem("tutorial"); }
if (savedInstanceState == null) {
SelectItem("tutorial");
}
确保ScreenSlideActivity.java立即启动。这个解决方案的问题是,当教程打开时,我无法再从那里访问MainActivity.java,也不能从“up”按钮访问MainActivity.java,也不能从教程最后一页的“finish”按钮访问MainActivity.java,可能是因为某种原因,我不再将main作为父活动
然后我尝试了修改清单xml文件的这个解决方案。添加:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
为了提高效率。
这个解决方案的问题是它改变了我项目的结构,使我的ScreenSlideActivity.java成为主要的启动活动(因此我无法再从这里访问主要活动),而我只想显示一次
我还能做什么?我通常处理临时屏幕的方法与您的第一个解决方案类似:
MainsActivity -> ScreenSlideActivity
您可以使用SharedReferences检查/设置是否是第一次打开应用程序
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
}
}
这里有一个类似的问题:回答得很好。我还按照Quanturium的建议,在按下“完成”按钮时使用了
finish()
,以便在用户导航回主活动后从堆栈中删除第二个活动。它运作顺利。非常感谢你