Setting a spinner onClickListener() in Android

后端 未结 7 767
不思量自难忘°
不思量自难忘° 2020-11-29 03:43

I\'m trying to get an onClickListener to fire on a Spinner, but I get the following error:

Java.lang.RuntimeException is \"Don\'t call setOnClickListe

7条回答
  •  隐瞒了意图╮
    2020-11-29 04:09

    The Spinner class implements DialogInterface.OnClickListener, thereby effectively hijacking the standard View.OnClickListener.

    If you are not using a sub-classed Spinner or don't intend to, choose another answer.

    Otherwise just add the following code to your custom Spinner:

    @Override
    /** Override triggered on 'tap' of closed Spinner */
    public boolean performClick() {
        // [ Do anything you like here ]
        return super.performClick();
    }
    

    Example: Display a pre-supplied hint via Snackbar whenever the Spinner is opened:

    private String sbMsg=null;      // Message seen by user when Spinner is opened.
    public void setSnackbarMessage(String msg) { sbMsg=msg; }
    @Override
    /** Override triggered on 'tap' of closed Spinner */
    public boolean performClick() {
        if (sbMsg!=null && !sbMsg.isEmpty()) { /* issue Snackbar */ }
        return super.performClick();
    }
    

    A custom Spinner is a terrific starting point for programmatically standardising Spinner appearance throughout your project.

    If interested, looky here

提交回复
热议问题