
我有一个Android Spinner,当用户在显示微调器的选择面板时按“Back Key”时我想听这个事件.我已经实现了OnItemSelectedListener,但是当按下后退键时没有调用onnothingSelected(AdapterVIEw arg0).
我只想在用户选择任何内容时(或选择面板消失)收听事件.
有没有正确的方法来做到这一点?
谢谢!
Spinner s1 = (Spinner) findVIEwByID(R.ID.spinner1); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromresource( this, R.array.colors, androID.R.layout.simple_spinner_item); adapter.setDropDownVIEwResource(androID.R.layout.simple_spinner_dropdown_item); s1.setAdapter(adapter); s1.setonItemSelectedListener( new OnItemSelectedListener() { public voID onItemSelected( AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) { showToast("Spinner1: position=" + position + " ID=" + ID); } public voID onnothingSelected(AdapterVIEw<?> parent) { showToast("Spinner1: unselected"); } });这是AndroID 2.2 SDK中的示例,当选择面板消失时,它也不会显示“Spinner1:unselected”.
解决方法:
看起来如果不扩展Spinner类,你将无法做你想做的事.似乎Spinner没有使用它构建的AlertDialog注册OnCancelListener来显示项目.
代码来自Spinner.java:
@OverrIDe public boolean performClick() { boolean handled = super.performClick(); if (!handled) { handled = true; Context context = getContext(); final DropDownAdapter adapter = new DropDownAdapter(getAdapter()); AlertDialog.Builder builder = new AlertDialog.Builder(context); if (mPrompt != null) { builder.setTitle(mPrompt); } mPopup = builder.setSingleChoiceItems(adapter, getSelectedItemposition(), this).show(); } return handled; } public voID onClick(DialogInterface dialog, int which) { setSelection(which); dialog.dismiss(); mPopup = null; }此外,只有在单击对话框中的项目时才会调用setSelection.当用户按下后退按钮时,将不会调用此按钮,因为这是OnCancel事件.
扩展Spinner会有点痛苦,因为你必须从AndroID源代码将所有内容复制回AdapterVIEw,因为实现所需的各个成员字段只在包级别公开.
总结以上是内存溢出为你收集整理的android – 为什么没有调用spinner中的onNothingSelected?全部内容,希望文章能够帮你解决android – 为什么没有调用spinner中的onNothingSelected?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)