use*_*519 3 java eclipse android
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是代码,Toasts用于测试代码是否正在运行.活动实现OnClickListener
该onClick方法不起作用,我使用它因为我有42个按钮,我不能setOnClickListener()为每个按钮编写42个方法.
在我创建的代码中,在两个循环中,42个按钮(7*6),每次按下每个按钮,它将被禁用,并在下次红色再次改变按钮的背景颜色一次黄色.
您缺少在嵌套for循环内调用以下内容:
btn.setOnClickListener(this);
Run Code Online (Sandbox Code Playgroud)
这里,this指的是Activity哪个实现OnClickListener
为您错过的按钮设置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);
}
}
Run Code Online (Sandbox Code Playgroud)