Java Android向多个按钮添加资源侦听器
我的Android项目有一个非常奇怪的问题。我有一个2d按钮数组,我正在尝试将动作侦听器添加到这些按钮中。这就是我所拥有的:Java Android向多个按钮添加资源侦听器,java,android,Java,Android,我的Android项目有一个非常奇怪的问题。我有一个2d按钮数组,我正在尝试将动作侦听器添加到这些按钮中。这就是我所拥有的: for ( i = 0; i<buttons.length;i++) { for ( k = 0; k<buttons[i].length;k++) { String but = "mtp" + i + k; buttons[i][k] = (
for ( i = 0; i<buttons.length;i++)
{
for ( k = 0; k<buttons[i].length;k++)
{
String but = "mtp" + i + k;
buttons[i][k] = (Button)v.findViewWithTag(but);
if (k%2 == 0)
{
buttons[i][k].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
text.setText(words[w]);
w++;
}
});
}
else
{
buttons[i][k].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int res = getResources().getIdentifier(icons[p],"drawable", getPackageName());
buttons[i][k].setBackgroundResource(res);
p++;
}
});
}
}
}
它很好用。
我该怎么办?如何修复此问题?这些按钮是否在XML文件中?或者你是想通过编程来实现它?因为您可以在活动中实现OnClickListener 这里有一个替代方案 XML: 这缩短了您必须编写的代码量,并且更易于阅读,因为所有内容都是预先实现的
我知道这并不能完全回答你的问题,但我希望能有所帮助。这就是我到目前为止对使用Java为Android编码的了解。首先,在匿名类(在
new View.OnClickListener()
实现中)中不能使用I
和k
变量,直到它声明为final
另外,text
变量(如我所见,作为对某个TextView对象的引用)也必须是final,因此,它将在每次迭代中引用相同的TextView
你必须改变
buttons[i][k].setBackgroundResource(res);
有点像
((Button)view).setBackgroundResource(res);
因为当调用onClick()处理程序时,i
和k
变量将无效。
但是名为
view
的onClick()参数实际引用了已单击的视图。很难理解您的问题,,,,,您到底想要什么?显示崩溃的堆栈跟踪。另外,如果您已经有一个2D按钮数组,为什么需要使用findViewWithTag
查找它们?为什么会崩溃?LogCat怎么说?非常感谢这真的很有帮助
public class YOUNAMEHERE extends Activity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void button1 (View v) {
*The things you want to happen when the button is pressed*
}
buttons[i][k].setBackgroundResource(res);
((Button)view).setBackgroundResource(res);