片段上 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"
大家好,我正在尝试在我的片段上制作一个简单的微调器,但我厌倦了在没有任何有效解决方案的情况下搜索互联网。这是我的代码
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 thespinner.setAdapter(dataAdapter);
您在此处初始化 spinner
:
Spinner spinner = (Spinner) view.findViewById(R.id.type_spinner);
由于 spinner
为空,这意味着您使用了错误的 ID。仔细检查您是否在 fragment_search_pharmacy.xml
android:id="@+id/type_spinner"