如何解决错误:getSharedPreferences(String,int)未定义类型new View.OnClickListener(){}

时间:2014-11-06 12:47:13

标签: android android-fragments sharedpreferences

我在编码中遇到此错误,并不完全确定如何解决此问题。我已经搜索过以尝试解决此问题,但似乎无法找到有效的方法。我以前做过这件事,但从来没有在一个片段中,所以可能是因为那个?

我正在关注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;
} }

有人可以帮助我吗? 任何帮助将不胜感激!

2 个答案:

答案 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;