我在编码中遇到此错误,并不完全确定如何解决此问题。我已经搜索过以尝试解决此问题,但似乎无法找到有效的方法。我以前做过这件事,但从来没有在一个片段中,所以可能是因为那个?
我正在关注exception
:
方法getSharedPreferences(String,int)未定义类型new View.OnClickListener(){}
这是我的代码:
public class TestingFragment extends Fragment {
public TestingFragment(){}
private CheckBox ch;
private Context pref;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_testing, container, false);
ch = (CheckBox) rootView.findViewById(R.id.checkBox62);
ch.setOnClickListener(new View.OnClickListener() {
private String PREFRENCES_NAME;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(ch.isChecked())
{
SharedPreferences pref = getSharedPreferences(PREFRENCES_NAME,0);
ch.setChecked(pref.getBoolean("cbx62_ischecked" ,true));
pref.edit().putBoolean("check",false).commit();
}
{
}}
});
return rootView;
} }
有人可以帮助我吗? 任何帮助将不胜感激!
答案 0 :(得分:18)
更改此代码:
SharedPreferences pref = getSharedPreferences(PREFRENCES_NAME,0);
致:
SharedPreferences pref = getActivity().getSharedPreferences(PREFRENCES_NAME,0);
请记住,您无法直接从getSharedPreferences
调用Fragment
方法,因为它属于Activity
类。因此,您只需致电getActivity
。
答案 1 :(得分:3)
错误意味着View类中没有getSharedPreferences方法,因为getSharedPreferences是Context类的方法。要在View类中访问getSharedPreferences方法,您需要为其提供Context类的实例。类似的东西:
//Instance of Context
Context pref;
SharedPreferences sharedPref = pref.getSharedPreferences(PREFRENCES_NAME,0);
注意:上下文优先&字符串PREFRENCES_NAME不应为null;