我有一个2d数组按钮设置为tic tac toe游戏。
他们的ID格式如下(相对于他们在主板上的协调:
button00,button01,button02,button10 ......等
我试图建立我的构造,让他们的视图动态发生,而不必详细说明并解决所有人:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
for(int x = 0; x< this.boardButtons.length; x++){
for(int y = 0; y< this.boardButtons[x].length; y++){
try {
Button button = findViewById(R.id.class.getMethod("button")); // <- reflective code is HERE
} catch(Exception e){
e.printStackTrace();
}
this.boardButtons[x][y].setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
Button clickedB = (Button) view;
clickedB.setText(zeroTurn ? R.string.t_o:R.string.t_x);
clickedB.setEnabled(false);
zeroTurn = !zeroTurn;
}
});
}
}
理想情况下,我会按如下方式构造try块的内容:
Button button = findViewByID(R.id.button[x][y]); //etc
通过一些研究,我发现我可以使用反射做类似的事情,但是当我尝试这样做时,IDE仍然会抛出错误:
findViewByID(int) in AppCompatActivity cannot be applied to java.lang.reflect.Method
有人可以详细说明我正在尝试做的正确实施