Java 如何将上下文传输到片段类

Java 如何将上下文传输到片段类,java,android,android-fragments,android-context,Java,Android,Android Fragments,Android Context,我刚刚创建了一个片段类。此类绑定到包含ListView的布局。现在我想为这个ListView设置一个适配器,但因此我需要一些“上下文”。 我可以通过构造函数将它们从MainActivity类传输到Fragment类,但是Eclipse告诉我不要更改Fragment类的默认构造函数。然后我试着设置一个 public static Context context; MainActivity.context = this; 在MainActivity类中,可以从任何地方访问此上下文,但还是出现了一些

我刚刚创建了一个片段类。此类绑定到包含ListView的布局。现在我想为这个ListView设置一个适配器,但因此我需要一些“上下文”。 我可以通过构造函数将它们从MainActivity类传输到Fragment类,但是Eclipse告诉我不要更改Fragment类的默认构造函数。然后我试着设置一个

public static Context context;
MainActivity.context = this;
在MainActivity类中,可以从任何地方访问此上下文,但还是出现了一些错误

如何在片段类中设置适配器? 看起来是这样的:

public static class LatestFragment extends Fragment {
    ListView listView;

    public LatestFragment() {

    }
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_latest, container, false);
        listView = (ListView) rootView.findViewById(R.id.fragment_latest_listview1);

        return rootView;
    }
}
getActivity();

如您所见,有一个listView,我想为它设置一个适配器。但是我应该从哪里获得“上下文”?

您可以使用关联的活动作为上下文,因为活动是上下文的间接子类。您可以在如下片段中获得活动:

public static class LatestFragment extends Fragment {
    ListView listView;

    public LatestFragment() {

    }
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_latest, container, false);
        listView = (ListView) rootView.findViewById(R.id.fragment_latest_listview1);

        return rootView;
    }
}
getActivity();

这会从Android studio发出警告,因为它可能会生成“java.lang.NullPointerException”。在某些情况下,getActivity()会返回null。在使用它之前,需要先检查是否为空。这就是这个警告告诉你的。谢谢你的解释。我可以检查它一次并将其分配给要使用的变量吗?或者这会在将来带来其他复杂情况吗?这取决于调用getActivity时片段生命周期处于哪个阶段。例如,假设片段当前已从活动中分离。我想说,你最好在使用前检查是否为空。