android-multi onClick listener в одной кнопке

Я создал специальный компонент, например Mybutton.java , и установил прослушиватель onclick в Mybutton.java.

Теперь в моем новом действии я должен вызвать Mybutton и добавить контент в прослушиватель onclick.

Однако, если я использую OnClickListener mClickListener = new OnClickListener () {...... , он заменит старый контент. Я надеюсь, что сможет. старый и новый слушатель вместе.

Я искал некоторую информацию и выяснил, что могу реализовать этот метод. После многих попыток я все еще получаю ошибки.

Кто-нибудь может дать мне простой пример , который я могу научить его изменять?

16
задан Roland Weisleder 3 January 2018 в 14:29
поделиться

1 ответ

Вы можете создать свой собственный класс Button примерно так:

    public class MyButton extends Button {

    private CustomOnClickListener mCustomOnClickListener;

    public interface CustomOnClickListener {
        void onClick(View v);
    }


    public MyButton(Context context) {
        super(context);

        // Set your own onClickListener
        View.OnClickListener ocl = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Do whatever you want to do

                // Invoke the other added onclick listener
                if(mCustomOnClickListener != null) {
                    mCustomOnClickListener.onClick(v);
                }
            }
        };
        setOnClickListener(ocl);
    }

    // use this function to set the other onclick listener
    public void setCustomOnClickListener(CustomOnClickListener cl) {
        mCustomOnClickListener = cl;
    }

    }

и использовать его так:

    // create your button
    MyButton button = new MyButton(context);
    // add your custom onClickListener
    button.setCustomOnClickListener(new MyButton.CustomOnClickListener() {
        @Override
        public void onClick(View v) {
            // Do whatever you intend to do after the actual onClickListener
            // from MyButton class has been invoked.
        }
    });
4
ответ дан 30 November 2019 в 16:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: