私はクリック可能なカスタムTextViewを持っています。クリックに基づいて外観を変更するために、独自のonClickハンドラを定義します。しかし、私はクリックしたボタンに基づいて何かを行うために私のアクティビティで2番目のonClickハンドラを定義すると、onClick関数の1つだけが呼び出されます。 onClickはvoid関数です - 私はこのクリックを処理しなかったと言う方法はありますか?他のonClickハンドラに渡してください。私が持っているのTextViewを拡張Android - 2つのonClickリスナーと1つのボタン
インサイドMyCheckButton:ここより明確にする
はコードである
setOnClickListener(mClickListener);
private OnClickListener mClickListener = new OnClickListener() {
public void onClick(View v) {
toggle();
}
};
私は私の活動にMyCheckButtonが含まれ、そしてもちろん私はときに何かをする必要がありしかし、
MyCheckButton button= (MyCheckButtonButton) findViewById(R.id.cb);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// do something in the app
}
});
setOnClickListenerを呼び出すことによって2回、私がTOGように、元のリスナーを交換していますことが表示されます:私はそれを別のOnClickListenerを添付してクリック外観を変更するgle()は決して呼び出されません。このボタンがクリックされたときに、その外観を変更するためにすでにonClickハンドラを使用している場合、私は自分のアクティビティで何かを行うことができますか?私は、両方のOnClickListenersが呼び出されるのを見ていると思いました。あなたは次のようにボタンにクリック時のリスナーを添付することができ
ええ、私はあなたが正しいと思います。また、あなたのXMLファイルにonClick属性を与えて、onClickListenerを設定した後でもあなたのメソッドを呼び出すかどうかを調べることができます。 – schwiz
私はこれがイベントのバブリングの問題ではないと思うし、私の問題は同じビューに2つのOnClickListenersを追加できないということですか?それは他の場所の標準的な練習なので、私は混乱しています。 – Mark
xml onClickを使用すると、setOnClickListenerがそれをオーバーライドします。 – Mark