出于某种原因,将“内部”附加OnClickListener
到ImageButton
应用程序会使应用程序崩溃。对于正常Button
的 s 它工作正常 - 只有它才会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
类并将其附加到图像按钮,那么它工作正常。
有任何想法吗?显然,将“内部”附加到 a 时出现问题(this)
OnClickListener
,ImageButton
而将其附加到 a 时工作正常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{} 并且只有图像按钮存在,它就可以工作。这显然是一个愚蠢的错误,但我很感激并解释为什么:-)