【问题标题】:How to resolve an error: getSharedPreferences(String, int) is undefined for the type new View.OnClickListener(){}如何解决错误:getSharedPreferences(String, int) 未定义新 View.OnClickListener(){} 类型
【发布时间】:2015-01-02 23:34:03
【问题描述】:

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

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

有人可以帮我解决这个问题吗? 任何帮助将不胜感激!

【问题讨论】:

    标签: android android-fragments sharedpreferences


    【解决方案1】:

    该错误表示View类中没有getSharedPreferences方法,因为getSharedPreferences是Context类的方法。为了访问 View 类中的 getSharedPreferences 方法,您需要为其提供 Context 类的实例。比如:

    //Instance of Context 
    Context pref;
    
    SharedPreferences sharedPref = pref.getSharedPreferences(PREFRENCES_NAME,0);
    

    注意:上下文首选项和字符串 PREFRENCES_NAME 不应为空;

    【讨论】:

      【解决方案2】:

      更改此代码:

      SharedPreferences pref = getSharedPreferences(PREFRENCES_NAME,0);
      

      收件人:

      SharedPreferences pref = getActivity().getSharedPreferences(PREFRENCES_NAME,0);
      

      记住你不能直接从Fragment调用getSharedPreferences方法,因为它属于Activity类。因此,您只需致电getActivity

      【讨论】:

      • 谢谢!现在一切正常,但退出应用程序或返回此活动时似乎没有保存复选框中的勾号?
      • @Keithk Great :) 请接受我的回答。您需要为此创建一个新问题(这不是我不想帮助您,它是如何工作的 - 1 个问题 1 个答案)。只需创建一个新问题 :)
      • @Keithk 让我知道链接,我也许可以再次帮助你:)
      • 谢谢你的回答,直到你的回答让我意识到它需要这个活动之前我都快疯了
      猜你喜欢
      • 2013-07-04
      • 1970-01-01
      • 2018-02-05
      • 2021-12-30
      • 2014-05-25
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多