我是Android开发的新手,我遇到了一些无法解决的问题。 我尝试在 Fragment 中实现 Spinner ,现在它遇到了 spinner.setOnItemClickListener()方法的问题,
显示错误消息:
“setOnItemClickListener Spinner中的(android.widget.AdapterView.OnItemClickListener)不能 适用于(匿名 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;
}
}
答案 0 :(得分:2)
错误消息告诉您setOnItemClickListener()
采用OnItemClickListener
类型的参数。但是,你给它一个OnItemSelectedListener
。由于Spinner
不支持OnItemClickListener
,您可能需要调用以onItemSelectedListener()
为参数的OnItemSelectedListener
。
答案 1 :(得分:1)
setOnItemClickListener 不会像我在Spinner SetOnItemClickListener所说的那样使用微调器:
微调器不支持项目点击事件。调用这个方法会 提出异常。
改为使用 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) {
}
});
答案 2 :(得分:0)
使用getActivity()
代替getBaseContext()
答案 3 :(得分:0)
您有理由getBaseContext()
吗?您应该只能将getActivity()
作为createFromResource()