getSharedPreferences在某些设备上返回Null指针执行

时间:2017-07-10 07:34:10

标签: android android-fragments android-context

我在谷歌播放应用程序,在大多数设备上它工作得很好但似乎在某些三星(SM-G531H,SM-G530BT),华为,联想设备上它在getSharedPreferences调用时崩溃。

我在片段方法中引用了来自onAttach(Context context)的上下文(我在getSharedPreferences之前没有调用onAttach

@Override
    public void onAttach(Context context) {
        super.onAttach(context);

        mContext = context;
        //init firebase analytics
        mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);
    }

我有sharedPreference辅助类和构造函数

 public UserStats(Context mContext) {

    CRASH HERE

        sharedPreferences = mContext.getSharedPreferences(PREF_USER,Context.MODE_PRIVATE); 

        }

这是片段中调用sharedPreference

的方法
private void setGoal(int calories){
        new UserStats(mContext).setNewGoal(calories);

        tvGoal.setText("Goal\n" + calories + " Cal");
    }

知道为什么会这样吗?以及如何避免它? (我无法调试它,我在Firebase控制台中收到崩溃)

3 个答案:

答案 0 :(得分:2)

始终使用getApplicationContext()

答案 1 :(得分:0)

使用getActivity()替换mContext。它找不到片段的引用。所以,app崩溃了。

答案 2 :(得分:0)

如果您正在使用getApplicationContext()

如果您使用片段getContext()

如果你在适配器类中使用context并添加适配器构造函数的Context参数。