setOnClickListener () не работает в моем пользовательском представлении - PullRequest
0 голосов
/ 29 октября 2019

У меня есть пользовательский вид, кнопка, но setOnClickListener() не работает.

class ButtonReadBarcode extends android.support.v7.widget.AppCompatButton {

    public String ma_vach = "";
    private Activity ac = null;

    public ButtonReadBarcode(Context context) {
        super(context);
        ac = Global.getActivity( context);
        init();
    }
    private void init(){
        setVisibility(View.VISIBLE);
        setLayoutParams( new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
        setText("Scan barcode ...");
        setAllCaps(false);
    }

    @Override
    public void setOnClickListener( View.OnClickListener l) {
        super.setOnClickListener(l);
        // this line does now work        
        setText("I want this text show when click");
    }

}

нет сообщений об ошибках

Ответы [ 2 ]

2 голосов
/ 29 октября 2019

Вы переопределяете свой setOnClickListener, он будет работать только в том случае, если вы вызываете его где-то еще, тогда он будет делать то, что вы передаете в качестве параметра + установить текст, как вы написали.

Чтобы переопределить базовый щелчокКнопка, которую вы должны переопределить onClick:

@Override
public void onClick(View v) {
     setText("I want this text show when click");
}
1 голос
/ 29 октября 2019

Для этой проблемы вы можете попробовать следующий код, который работает для меня:

public class CustomButton extends AppCompatButton {
    public CustomButton(Context context) {
        super(context);
    }

    public CustomButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void setOnClickListener(@Nullable OnClickListener l) {
        super.setOnClickListener(l);
        setText("asdf");
    }
}

Вот XML:

<com.example.stackoverflowquestions.CustomButton
            android:id="@+id/customButton"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="#FFFFFF"
            android:text="Custom Button"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            android:background="@color/colorPrimaryDark"/>

И просто используйте его в MainActivity как:

 CustomButton customButton =  findViewById(R.id.customButton);
        customButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...