Java Android:SharedReferences PreferenceManager.GetDefaultSharedReferences在类中

Java Android:SharedReferences PreferenceManager.GetDefaultSharedReferences在类中,java,android,class,sharedpreferences,android-preferences,Java,Android,Class,Sharedpreferences,Android Preferences,我想从我的首选项片段中获取一个字符串到我的android应用程序中的一个类,但我不能像通常那样获取它 我的班级代码: public class VtplListContentItem implements VtplListItem { private VtplEntry m_data; public VtplListContentItem(VtplEntry data) { m_data = data; } @Override

我想从我的首选项片段中获取一个字符串到我的android应用程序中的一个类,但我不能像通常那样获取它

我的班级代码:

public class VtplListContentItem implements VtplListItem  {

    private VtplEntry m_data;       

    public VtplListContentItem(VtplEntry data) {
        m_data = data;
    }

    @Override
    public int getViewType() {
        return RowType.LIST_ITEM.ordinal();
    }

    @Override
    public View getView(LayoutInflater inflater, View convertView) {
        View view;
        if(convertView == null) {
            view = inflater.inflate(R.layout.list_item, null);
        }
        else {
            view = convertView;
        }

        [...]

        // (this) is the error Context cannot be applied to this class
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 

        String myClass = prefs.getString("UserMyClass", "null");

        // Mark
        if (m_data.getSchoolClass().contains(myClass)) {
            view.setBackgroundResource(R.color.accent);
        } else {
            view.setBackgroundResource(android.R.color.white);
        }
        return view;
    }

    @Override
    public VtplEntry getData() {
        return m_data;
    }

}
我试过:

public class VtplListContentItem extends Activity implements VtplListItem {
但是我得到了一个错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
        at com.philipp_mandler.android.vtpl.VtplListContentItem.getView(VtplListContentItem.java:52)
        at com.philipp_mandler.android.vtpl.VtplListAdapter.getView(VtplListAdapter.java:38)
第52行是:

SharedPreferences=PreferenceManager.getDefaultSharedPreferences(此)


问题是(这个),但是我不知道我需要选择哪个上下文。你应该实例化一个对象,将活动的上下文作为参数传递到构造函数中,然后使用它将上下文传递到构造函数中
我如何以最佳方式做到这一点?:)VtplListContentItem必须构造此对象,将上下文传递给已实例化的活动,例如:
class MyActivity扩展活动{VtplListContentItem s=new VtplListContentItem(sampledata,MyActivity.this);//然后,您可以使用已传递的活动的上下文,以便在共享prefs}的方法中使用它
public class VtplListContentItem implements VtplListItem  {

    private Context m_context;

    public VtplListContentItem(VtplEntry data, Context context) {
        m_data = data;
        m_context = context;
    }

    ...

    @Override
    public View getView(LayoutInflater inflater, View convertView) {
        ...
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(m_context);
        ...
    }

    ...

}