onClick
永远不会开火!为什么不?请帮帮我。
for(int i = 0; i < 12; i++) {
String title = "Button" + i;
Button sliderButton = new Button(this);
sliderButton.setText(title);
glideMenuTray.addView(sliderButton,100,40);
sliderButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.d("gm", "Tapped ");
}
});
}
答案 0 :(得分:2)
我不是这方面的专家,但它可能与垃圾收集有关,而且OnClickListeners超出了范围。
虽然我不认为你可以使用Dimitar提到的onClickListeners的超级简单方法,你可以使用他链接的部分讨论的中间方法,即使它不是一种新的方法。要在此处重复示例代码,请执行以下操作:
View.OnClickListener handler = View.OnClickListener() {
public void onClick(View v) {
switch (v.getId()) {
case R.id.myButton: // doStuff
break;
case R.id.myOtherButton: // doStuff
break;
}
}
}
findViewById(R.id.myButton).setOnClickListener(handler);
findViewById(R.id.myOtherButton).setOnClickListener(handler);
如果区分按钮的唯一区别是它们的标题文本,那么您可以使用它来在主onClick方法中区分它们。
答案 1 :(得分:2)
另外,不是shure,我曾经在TextView上遇到类似的问题,因为我没有添加setClickable(true)
我的代码就像
TextView text = new TextView(this);
text.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
text.setText("***");
text.setClickable(true);
text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//My action
}
});
myViewGroup.addView(text );
希望这有帮助
答案 2 :(得分:0)
如果您使用的是Donut或Eclair,您可以使用在您的Activity中注册的常用点击监听器,并将其与布局XML中的按钮挂钩。
供参考,请查看here,类别更轻松的点击监听器。
答案 3 :(得分:0)
我是否正确地假设以下行:
glideMenuTray.addView(sliderButton,100,40);
将视图添加到coords x:100,y:40到某些视图扩展ViewGroup?
在这种情况下,您将12个按钮堆叠在一起,只有最后一个按钮(标记为Button11)可见(并且可单击)。
如果问题是3岁,我真的希望你现在已经解决了这个问题:)
答案 4 :(得分:0)
在添加视图之前设置setOnClickListener。
for(int i = 0; i < 12; i++) {
String title = "Button" + i;
Button sliderButton = new Button(this);
sliderButton.setText(title);
sliderButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.d("gm", "Tapped ");
}
glideMenuTray.addView(sliderButton,100,40);
}