存储变量总是读为假?

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() 获得的首选项不同。