【问题标题】:Stored variable always read as false?存储的变量总是读为假?
【发布时间】:2020-10-10 14:12:09
【问题描述】:

我的 Java 类中有这个:

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 课程中:

  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!
}

最后一行总是打印false,即使我的Java 类中的代码被调用。为什么?

【问题讨论】:

    标签: java kotlin sharedpreferences


    【解决方案1】:

    getPreferences() 为您提供了一个首选项对象,该对象的范围仅限于您从中调用它的上下文(实际上只是在类之后命名它)。

    使用getSharedPreferences()PreferenceManager.getDefaultSharedPreferences() 获取在您的应用中全局共享的对象。

    您的 Kotlin 类当前使用的是 getPreferences(),因此它不会查看您在接收器中使用的首选项,而您使用 getSharedPreferences() 的名称获得的首选项。

    【讨论】:

      猜你喜欢
      • 2015-12-15
      • 2010-09-19
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多