存储变量总是读为假?
Stored variable always read as false?
我有这个 Java class:
public class ActionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences prefs = context.getSharedPreferences("prefs", Context.MODE_PRIVATE);
prefs.edit().putBoolean("saved", true).apply();
}
}
这是我的 Kotlin class:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.mylayout)
val prefs = getPreferences(MODE_PRIVATE)
val saved = prefs.getBoolean("saved", false)
System.out.println("Saved value: " + saved) // always prints false!
}
即使调用了我的 Java class 中的代码,最后一行总是打印 false
。为什么?
getPreferences()
为您提供了一个首选项对象,该对象的范围是您调用它的上下文(实际上只是在 class 之后命名)。
使用 getSharedPreferences()
或 PreferenceManager.getDefaultSharedPreferences()
获取在您的应用程序中全局共享的对象。
您的 Kotlin class 当前正在使用 getPreferences()
,因此它查看的首选项与您在 Receiver 中使用的首选项与您通过名称 getSharedPreferences()
获得的首选项不同。
我有这个 Java class:
public class ActionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences prefs = context.getSharedPreferences("prefs", Context.MODE_PRIVATE);
prefs.edit().putBoolean("saved", true).apply();
}
}
这是我的 Kotlin class:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.mylayout)
val prefs = getPreferences(MODE_PRIVATE)
val saved = prefs.getBoolean("saved", false)
System.out.println("Saved value: " + saved) // always prints false!
}
即使调用了我的 Java class 中的代码,最后一行总是打印 false
。为什么?
getPreferences()
为您提供了一个首选项对象,该对象的范围是您调用它的上下文(实际上只是在 class 之后命名)。
使用 getSharedPreferences()
或 PreferenceManager.getDefaultSharedPreferences()
获取在您的应用程序中全局共享的对象。
您的 Kotlin class 当前正在使用 getPreferences()
,因此它查看的首选项与您在 Receiver 中使用的首选项与您通过名称 getSharedPreferences()
获得的首选项不同。