使用java反射动态构造视图ID

时间:2018-02-19 18:33:54

标签: java android

我有一个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

有人可以详细说明我正在尝试做的正确实施

0 个答案:

没有答案