SharedReferences在Android中无法正常工作

SharedReferences在Android中无法正常工作,android,sharedpreferences,Android,Sharedpreferences,我的应用程序中有一个帮助活动,我希望它只在第一次运行时启动 我试过这个: 在“创建帮助”活动中: SharedPreferences settings = getSharedPreferences("prefs", 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("firstRun", true); editor.commit(); Intent intent = new Intent(this,

我的应用程序中有一个帮助活动,我希望它只在第一次运行时启动

我试过这个:

在“创建帮助”活动中:

SharedPreferences settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("firstRun", true);
editor.commit();

Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
@Override
public void onResume() {
super.onResume();
SharedPreferences settings = getSharedPreferences("prefs", 0);
boolean firstRun = settings.getBoolean("firstRun", true);
if (!firstRun) {
    Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    Log.d("TAG1", "firstRun(false): " + Boolean.valueOf(firstRun).toString());
} else {
    Log.d("TAG1", "firstRun(true): " + Boolean.valueOf(firstRun).toString());
}
}
在帮助活动的恢复中:

SharedPreferences settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("firstRun", true);
editor.commit();

Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
@Override
public void onResume() {
super.onResume();
SharedPreferences settings = getSharedPreferences("prefs", 0);
boolean firstRun = settings.getBoolean("firstRun", true);
if (!firstRun) {
    Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    Log.d("TAG1", "firstRun(false): " + Boolean.valueOf(firstRun).toString());
} else {
    Log.d("TAG1", "firstRun(true): " + Boolean.valueOf(firstRun).toString());
}
}
在创建MainActivity时:

SharedPreferences settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("firstRun", true);
editor.commit();

Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
@Override
public void onResume() {
super.onResume();
SharedPreferences settings = getSharedPreferences("prefs", 0);
boolean firstRun = settings.getBoolean("firstRun", true);
if (!firstRun) {
    Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    Log.d("TAG1", "firstRun(false): " + Boolean.valueOf(firstRun).toString());
} else {
    Log.d("TAG1", "firstRun(true): " + Boolean.valueOf(firstRun).toString());
}
}
SharedPreferences settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("firstRun", false);
editor.commit();

boolean firstRun = settings.getBoolean("firstRun", true);
Log.d("TAG1", "firstRun: " + Boolean.valueOf(firstRun).toString());
但是它不显示帮助活动,当它运行应用程序时,它只是跳转到
main活动


我的应用程序中有一个退出按钮,当我想用该按钮退出应用程序时,它只会再次显示
MainActivity
,而没有退出应用程序。

在创建
MainActivity
时执行此操作。如果您将
MainActivity
设置为启动器活动,那么这就是您所需要的全部内容。这是我的建议

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

boolean firstRun = settings.getBoolean("firstRun", true);
if (firstRun) {
    settings.edit().putBoolean("firstRun", false).apply();
    //start help activity
}
使用
MainActivity
作为启动器活动,您应该可以更快地启动,因为您不会每次创建两个活动。避免在后堆栈中有两个活动

注:谷歌不建议使用“退出”按钮。相反,您应该依靠back\home按钮关闭应用程序,让操作系统决定何时销毁应用程序。

您在哪里指定跳转到helpActivity?第一个提示:不需要helpActivity的
onCreate()
中的代码。由于将true指定为默认值,因此不需要在
onResume()
之前将其设置为true,因为如果不存在值,它将默认为true。至于退出按钮问题,请添加该按钮的点击代码。另外,请添加您的AndroidManifest.xml。@DanielNugent谢谢您的回答,但我对android编程很基础,您能帮我编写代码吗?例如,编辑我的错误代码以更正一个错误,我将接受您的答案;-)哪个活动被定义为主/启动器活动?在帮助活动中,您总是在不检查firstRun的情况下启动net MainActivity活动。因此,如果我将MainActivity设置为午餐活动,则我无法将帮助活动作为第一次运行活动打开:/上述代码将在第一次启动时启动helpActivity。这不起作用吗?你能描述一下发生了什么吗?请尝试卸载并重新安装该应用程序。“firstRun”的价值可能从以前就一直存在。如果这没有帮助,那么请对代码现在的外观问题进行编辑。