片段上 spinner.setAdapter(Adapter) 中的 NullPointerException

NullPointerException in spinner.setAdapter(Adapter) on Fragment

大家好,我正在尝试在我的片段上制作一个简单的微调器,但我厌倦了在没有任何有效解决方案的情况下搜索互联网。这是我的代码

public class AddMedicament extends Fragment  {




public AddMedicament() {
    // Required empty public constructor

}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_search_pharmacy, container, false);
    Spinner spinner = (Spinner) view.findViewById(R.id.type_spinner);
    ArrayList<String> categories = new ArrayList<String>();
    categories.add("g");
    categories.add("mg");
    categories.add("ml");
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity().getApplicationContext(), android.R.layout.simple_spinner_item,categories);
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinner.setAdapter(dataAdapter);



    //}

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String item = parent.getItemAtPosition(position).toString();
            Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
    return view;
}

}

我仍在获取 spinner.setAdapter(dataAdapter);

的 nullPointExeption

编辑 我发现这是一个愚蠢的错误,我在这里使用了不同的布局

我正在使用这个:

View view = inflater.inflate(R.layout.fragment_search_pharmacy, container, false);

应该是 R.id.type_spinner 存在的布局

 View view = inflater.inflate(R.layout.fragment_add_medicament, container, false);

我觉得问题出在这里

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),android.R.layout.simple_spinner_item,categories);

应该是

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item,categories);

为微调器创建适配器,您不需要应用程序的上下文。因此,即使您有扩展应用程序的 class,getActivity().getAppicationContext() 也是错误的。

i'm still getting the nullPointExeption to the spinner.setAdapter(dataAdapter);

您在此处初始化 spinner

Spinner spinner = (Spinner) view.findViewById(R.id.type_spinner);

由于 spinner 为空,这意味着您使用了错误的 ID。仔细检查您是否在 fragment_search_pharmacy.xml

中实际使用了 android:id="@+id/type_spinner"