何らかの理由で、「内部」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がある場合は、機能します。これは明らかにばかげたエラーですが、理由について説明していただければ幸いです:-)