2015-04-29 86 views
3
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用于测试代码是否正在运行。 活性实现OnClickListeneronClick方法不起作用

onClick方法不起作用,我用它,因为我有42个的按钮和不能写42种setOnClickListener()方法为每个按钮。

在我创建的代码中,在两个循环中,42个按钮(7 * 6),每次按下每个按钮时,它都将被禁用,并且会在下一次红色和红色时改变按钮的背景颜色一次。

回答

6

你缺少调用嵌套for循环内的以下内容:

btn.setOnClickListener(this); 

这里,thisActivity它实现OnClickListener

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); 
    } 
} 
4

从你发布的代码监听器中,我没有看到任何将onClick方法链接到你的按钮的东西。

尝试增加

btn.setOnClickListener(this); 

进入for循环

4

调用方法在你的onCreate()

yourButton.setOnClickListener(this); 
0

在你的onCreate()

尝试,你必须调用方法这个:

yourbuttonname.setOnClickListener(this); 

yourbuttonname.setOnClickListener(yourActivity.this);