安卓共享首选项不起作用?

时间:2017-08-31 20:23:29

标签: android sharedpreferences storage

以下方法正在运行,但现在它没有将我的整数写入文件。

public void writeChpNum(int num) {
    SharedPreferences prefs = context.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    prefs.edit().putInt("chapter", num).apply();
}

这就是我从Main class获得的:

SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
chapterNum = prefs.getInt("chapter", 1);

方法在这种情况下不起作用:

writeChpNum(1);
writeLastLine("0");

boolean deleted = file.delete();
boolean deleted2 = file2.delete();
boolean deleted3 = file3.delete();
boolean deleted4 = last.delete();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);

在这里,我想重新启动所有内容并退出,所以我要删除文件,但是对于章节我只需要写“1” - 章节。但是,它没有写。

这是因为我要退出应用程序吗?

1 个答案:

答案 0 :(得分:0)

当您像这样访问其他活动时,它们将无法在其他活动中使用。如果要将此方法仅写入一个类,请尝试在方法中传递上下文。 make method static,因此您不需要创建活动对象。

修改

根据您退出应用的新代码,您需要commit()而不是apply()

参考:https://developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply()

public static void writeChpNum(Context c, int num) {
    SharedPreferences prefs = c.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    prefs.edit().putInt("chapter", num).commit() ;
}