我在谷歌播放应用程序,在大多数设备上它工作得很好但似乎在某些三星(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控制台中收到崩溃)
答案 0 :(得分:2)
始终使用getApplicationContext()
答案 1 :(得分:0)
使用getActivity()替换mContext。它找不到片段的引用。所以,app崩溃了。
答案 2 :(得分:0)
如果您正在使用getApplicationContext()
。
如果您使用片段getContext()
。
如果你在适配器类中使用context
并添加适配器构造函数的Context参数。