共享首选项不工作,android?
以下方法正在工作,但现在它不会将我的整数写入文件。共享首选项不工作,android?
public void writeChpNum(int num) {
SharedPreferences prefs = context.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
prefs.edit().putInt("chapter", num).apply();
}
,这是我从主类获得:
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”章。但是,它没有写。
这是因为我正在退出应用程序吗?
当你像这样访问它时,上下文对象在其他活动中将不可用。尝试在方法中传递它的上下文,如果你想写这个方法只有一个类。使方法静态,所以你不需要创建活动对象。
编辑基于用于退出应用程序的新代码
你需要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() ;
}
我已经做了以下两个(在同一个应用程序中):'getContext()。getSharedPreferences(“sample_name”,MODE_PRIVATE);''以及'SharedPreferences sPrefs = getSharedPreferences(“Sleepin”,MODE_PRIVATE);'都工作。第一个是在一个适配器中。第二个是它自己的活动。 – Michael
是的,这个方法正在工作,但是,当我想写整数并退出应用程序时,它没有写入。代码在上面。 –
您在调用apply()时正在退出应用程序,请使用commit()方法。应用程序异步工作,所以在后台工作时称为退出。在完成写入/失败数据之后,commit()将进入下一行代码 –
是其正确的它怎么不工作?请显示一些错误日志。 –
共享的pref是应用程序私人文件不能直接访问 –
是的,我在不同的类使用这种方法。它在MainActivity类中获取整数,但它在另一个类中写入整数。我只需要在一堂课中使用它吗? –