我试图在我的第一个活动和第二个活动中驻留的碎片之间使用共享偏好。代码显示了我到目前为止所做的工作,但是我在获取上下文时遇到了问题。我也认为我在做什么不会工作所以只是想要一些快速的帮助。感谢
尝试调用虚方法' android.content.Context android.content.Context.getApplicationContext()'在null对象上 参考
阅读PREFS
sharedPreferences = getSharedPreferences("alexcz", MODE_PRIVATE);
String drawableString = sharedPreferences.getString("PARTICLE_TYPE", "null")
WRITE PREF
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_particle_type, container, false);
white_blur = (ImageButton)view.findViewById(R.id.white_blur);
green_blur = (ImageButton)view.findViewById(R.id.green_blur);
orange_blur = (ImageButton)view.findViewById(R.id.orange_blur);
pink_blur = (ImageButton)view.findViewById(R.id.pink_blur);
yellow_blur = (ImageButton)view.findViewById(R.id.yellow_blur);
blue_blur = (ImageButton)view.findViewById(R.id.blue_blur);
main main = new main();
Context context = main.getApplicationContext();
sharedPref = context.getSharedPreferences("alexcz", main.MODE_PRIVATE);
editor = sharedPref.edit();
editor.putString("PARTICLE_TYPE", "white_blur");
setOnClickListeners();
return view;
}
答案 0 :(得分:3)
永远不要这样做:main main = new main();
。而是做:
Context context = getActivity().getApplicationContext();
如果您希望访问片段内的applicationContext
。当您使用构造函数初始化Android活动时,一切都搞砸了,只是不要这样做。请参阅this question
答案 1 :(得分:0)
只需替换这些行:
main main = new main();
Context context = main.getApplicationContext();
sharedPref = context.getSharedPreferences("alexcz", main.MODE_PRIVATE);
使用:
sharedPref = getActivity().getSharedPreferences("alexcz", getActivity().MODE_PRIVATE);
editor = sharedPref.edit();
getActivity().MODE_PRIVATE
会显示通过static
访问instance
成员的警告。