0

我在课堂上使用我的共享偏好时遇到问题。我的代码和程序流程:

我有一个Spinner活动。我正在实现自己的 OnItemSelectedListener,如下所示:

MyOnItemSelectedListener.java

public class MyOnItemSelectedListener implements OnItemSelectedListener  {
     SharedPreferences pref;
     Editor editor;

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        //parent.setSelection(7);
        Toast.makeText(parent.getContext(), "Selected Country : " + parent.getItemIdAtPosition(pos), Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
}

我像这样从我的活动中调用上述课程:

spinner1 = (Spinner) findViewById(R.id.spinner1);
spinner1.setOnItemSelectedListener(new MyOnItemSelectedListener());

到目前为止一切顺利。我想要的是将所选项目保存spinner1到用户的首选项中(并从保存的值中设置它)。

在一个活动中,我正在使用我的共享首选项,如下所示:

pref = getApplicationContext().getSharedPreferences("MyPref", 0);

但在课堂内,上下文不存在!当用户在微调器上选择一个项目时检索/保存首选项有什么帮助吗?

谢谢!

4

1 回答 1

1

为您的侦听器创建一个构造函数并将 a 传递Context给它:

public class MyOnItemSelectedListener implements OnItemSelectedListener  {
    SharedPreferences pref;
    Editor editor;

    public MyOnItemSelectedListener(Context context) {
        pref = context.getSharedPreferences("MyPref", 0);
    }

    // rest of your code
}
于 2013-09-12T15:55:26.867 回答