Android 片段布尔值中的SharedReferences未更新

Android 片段布尔值中的SharedReferences未更新,android,android-fragments,sharedpreferences,Android,Android Fragments,Sharedpreferences,所以在我的主要活动中,我在检查布尔值时使用了SharedReferences public boolean uptadevalues(boolean updatedvalue) { SharedPreferences preferences = getPreferences(MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); if (mPremiumVQ

所以在我的主要活动中,我在检查布尔值时使用了SharedReferences

  public boolean uptadevalues(boolean updatedvalue) {

        SharedPreferences preferences = getPreferences(MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();


        if (mPremiumVQuery) {
            Log.d(TAG, "Called uptadevalues mPremiumVQuery");
            editor.putBoolean(mPremiumVString, true);
            editor.apply();
        } else {
            editor.putBoolean(mPremiumVString, false);
            editor.apply();
        }

        Log.d(TAG, "Called uptadevalues  ");

        return updatedvalue;
    }
我知道mPremiumQuery是正确的,因为
Log.d(标记,“称为uptadevalues-mPremiumVQuery”)出现在logcat上。这意味着SharedReference应该是
编写
首选项

关于片段:

    public boolean getPremiumValues() {

        Log.d(TAG, "getPremiumValues");
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
        return sp.getBoolean(mPremiumVString, false);

    }
然后点击按钮

 case R.id.button5:
                            if (getPremiumValues()) {
                            ** open activity **
                            } else {
                            **  dialog **  }
它总是显示对话框,但实际上应该打开新活动。 我看不出我的错误在哪里!谢谢你的帮助

更新:

问题是我使用了不同的方法来访问SharedReferences@piotr.wittchen说


有很多人说要从commit()改变;应用();我试过了,但没有区别,建议使用apply();通过谷歌,我一直使用它。

您的函数逻辑有问题,或者它不完整。首先,你的名字有拼写错误。它是
uptadevalues
,但可能应该是
updateValues
。其次,传递
布尔更新值
,然后对该值执行无操作,并返回它。这没有任何意义。在第一种方法中,您通过以下方式访问SharedReference:

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
但在第二种方法中,您是这样访问它们的:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());

在这两种情况下,最好使用相同的方法访问SharedReference。这可能会导致数据不一致。尝试只使用SharedReferences的一个实例。目前,您正在使用其中的许多功能。

请看这里:@Ruben您是在一个活动中设置它,然后在另一个活动中调用它吗?或者他们都在做同样的事?同样的事。首先是创建。第二个是ViewPager中的一个片段。谢谢!你很好地解释了我的错误在哪里。问题是你所指出的,我使用不同的方法访问SharedReferences,这给了我错误。