Fragment 中的 spinner.setOnItemClickListener() 错误
Error with spinner.setOnItemClickListener() inside Fragment
我是 Android 开发的新手,我遇到了一些无法解决的问题。
我试图在 Fragment 中实现 Spinner,现在 spinner.setOnItemClickListener()[=22 出现问题=]方法,
显示错误信息:
"setOnItemClickListener
(android.widget.AdapterView.OnItemClickListener) in Spinner cannot be
applied to (anonymous
android.widget.AdapterView.OnItemSelectedListener)
这是我的代码:
public class CheckAvailabilityFragment extends Fragment {
Spinner spinner;
ArrayAdapter<CharSequence> adapter;
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_check_availability, container,false);
spinner = (Spinner)getView().findViewById(R.id.spinner);
adapter = ArrayAdapter.createFromResource(getActivity().getBaseContext(),R.array.venue,android.R.layout.simple_list_item_1);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemClickListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
return rootView;
}
}
使用getActivity()
代替getBaseContext()
你想要 getBaseContext()
有什么理由吗?您应该能够将 getActivity()
作为 createFromResource()
的第一个参数传递
setOnItemClickListener 不适用于微调器,如 Spinner SetOnItemClickListener:
所述
A spinner does not support item click events. Calling this method will
raise an exception.
Instead use
setOnItemSelectedListener(AdapterView.OnItemSelectedListener).
尝试使用以下方法:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
错误消息告诉您 setOnItemClickListener()
采用类型 OnItemClickListener
的参数。但是,您给它一个 OnItemSelectedListener
。由于 Spinner
不支持 OnItemClickListener
,您可能想调用 onItemSelectedListener()
,它以 OnItemSelectedListener
作为参数。
我是 Android 开发的新手,我遇到了一些无法解决的问题。 我试图在 Fragment 中实现 Spinner,现在 spinner.setOnItemClickListener()[=22 出现问题=]方法,
显示错误信息:
"setOnItemClickListener (android.widget.AdapterView.OnItemClickListener) in Spinner cannot be applied to (anonymous android.widget.AdapterView.OnItemSelectedListener)
这是我的代码:
public class CheckAvailabilityFragment extends Fragment {
Spinner spinner;
ArrayAdapter<CharSequence> adapter;
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_check_availability, container,false);
spinner = (Spinner)getView().findViewById(R.id.spinner);
adapter = ArrayAdapter.createFromResource(getActivity().getBaseContext(),R.array.venue,android.R.layout.simple_list_item_1);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemClickListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
return rootView;
}
}
使用getActivity()
代替getBaseContext()
你想要 getBaseContext()
有什么理由吗?您应该能够将 getActivity()
作为 createFromResource()
setOnItemClickListener 不适用于微调器,如 Spinner SetOnItemClickListener:
所述A spinner does not support item click events. Calling this method will raise an exception.
Instead use setOnItemSelectedListener(AdapterView.OnItemSelectedListener).
尝试使用以下方法:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
错误消息告诉您 setOnItemClickListener()
采用类型 OnItemClickListener
的参数。但是,您给它一个 OnItemSelectedListener
。由于 Spinner
不支持 OnItemClickListener
,您可能想调用 onItemSelectedListener()
,它以 OnItemSelectedListener
作为参数。