protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play);
gl = (GridLayout) findViewById(R.id.grid);
array = new Button[7][6];
Button btn;
for(int i=0; i<7; i++)
{
for(int j=0; j<6; j++)
{
btn = new Button(this);
btn.setId(7*i + j + 1);
array[i][j] = btn;
gl.addView(btn);
}
}
turn = 0;
Toast.makeText(this, "Test", Toast.LENGTH_SHORT).show();
}
@Override
public void onClick(View v)
{
Toast.makeText(this, "Test1", Toast.LENGTH_SHORT).show();
if(v instanceof Button)
{
Toast.makeText(this, "Test2", Toast.LENGTH_SHORT).show();
int[] d = GetCellByID(v.getId());
Button b = (Button)v;
b.setEnabled(false);
if(turn == 0)
{
b.setBackgroundColor(Color.YELLOW);
turn = 1;
}
else
{
b.setBackgroundColor(Color.RED);
turn = 0;
}
array[d[0]][d[1]] = b;
}
}
这是代码,Toasts用于测试代码是否正在运行。
该活动实施OnClickListener
onClick
方法不起作用,我使用它是因为我有42个按钮,我不能为每个按钮编写42 setOnClickListener()
个方法。
在我创建的代码中,在两个循环中,42个按钮(7 * 6),每次按下每个按钮,它将被禁用,并且下次红色再次改变按钮的背景颜色一次黄色。
答案 0 :(得分:6)
您缺少在嵌套的for
循环中调用以下内容:
btn.setOnClickListener(this);
此处,this
指的是实现Activity
OnClickListener
答案 1 :(得分:6)
为您错过的按钮设置onClickListner。
for(int i=0; i<7; i++)
{
for(int j=0; j<6; j++)
{
btn = new Button(this);
btn.setId(7*i + j + 1);
array[i][j] = btn;
gl.addView(btn);
btn.setOnClickListener(this);
}
}
答案 2 :(得分:4)
在您发布的代码段中,我没有看到将onClick方法与您的按钮相关联的任何内容。
尝试添加
btn.setOnClickListener(this);
进入for循环
答案 3 :(得分:4)
onCreate()
中的调用方法yourButton.setOnClickListener(this);
答案 4 :(得分:0)
您必须在onCreate()
中调用方法试试这个:
yourbuttonname.setOnClickListener(this);
或
yourbuttonname.setOnClickListener(yourActivity.this);