何らかの理由で、「内部」OnClickListener
をにアタッチするImageButton
とアプリがクラッシュします。通常Button
の場合、正常に動作ImageButton
します。クラッシュするのはそれだけです。
public class SomeWidgets extends Activity implements OnClickListener {
....
button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(this);
imagebutton = (ImageButton)findViewById(R.id.imagebutton)
imagebutton.setOnClickListener(this);
....
....
}
をクリックすると、上記のコードがクラッシュしimagebutton
ます。button1
どちらもOnClickListener
まったく同じ方法で作成およびアタッチされていますが、正常に動作します。(それをクラッシュさせるのはクリックでonClick
あり、クリックの処理ではありません。)
ただし、プライベート内部OnClickListener
クラスを作成し、それをimagebuttonにアタッチすると、正常に機能します。
何か案は?どうやら、「内部」(this)
OnClickListener
をImageButton
に接続すると問題が発生しますが、に接続すると正常に動作しButton
ます。
編集:私は問題を見つけたようです。onClickを次のようにオーバーライドすると:
public void onClick(View v) {
if (((Button)v).getText().equals("A button")) {
edittext2.setText(edittext1.getText());
edittext1.setText("");
}
if (imagebutton.getId() == R.id.imagebutton) {
Toast.makeText(SomeWidgets.this, "This is an image button.",
Toast.LENGTH_LONG).show();
}
}
クラッシュします。ただし、最初のif {}を削除し、そこにある場合にのみimagebuttonがある場合は、機能します。これは明らかにばかげたエラーですが、理由について説明していただければ幸いです:-)