android– 为什么没有调用spinner中的onNothingSelected?

android– 为什么没有调用spinner中的onNothingSelected?,第1张

概述我有一个AndroidSpinner,当用户在显示微调器的选择面板时按“BackKey”时我想听这个事件.我已经实现了OnItemSelectedListener,但是当按下后退键时没有调用onNothingSelected(AdapterViewarg0).我只想在用户选择任何内容时(或选择面板消失)收听事件.有没有正确的方法来做到这

我有一个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?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1118626.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存