如何使用字符串通过变量名获取按钮?

时间:2014-08-21 07:40:34

标签: android android-layout

我的代码是这样的......

public class MainActivity extends Activity {
    String a = new String("1,2,3,4,5")

    private Button button1;
    private Button button2;
    private Button button3;
    private Button button4;
    private Button button5;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        startBtn = (Button) findViewById(R.id.startBtn);

        startBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                String[] splited=a.split(",");
                for(String b : splited){
                    (button"b").setBackground(Color.RED); 
                   //This is the part where I get stucked//
                    //I know the code is wrong but I just want to express my idea//
                }
            }
        });
    }
}

那么,如何使用更改字符串b命名按钮?

button1应首先更改其背景颜色,然后更改button2,button3等。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

不,那不是那样的。您不能为变量名称执行此操作(除非您使用reflection)。而不是该字符串采取Button数组。

private Button[] buttons = {button1,button2.....};

稍后

for(Button b : buttons ){
    b.setBackground(Color.RED);     
}

答案 1 :(得分:1)

只有两种方式:

  1. Suresh Atta提到了什么,因为没有反射就无法访问变量名称。

  2. 像这样访问按钮资源(假设XML中按钮的ID是button1,button2等):

    for (String b : splited){
        findViewById(getResources().getIdentifier("button" + b, "id", getPackageName()))
            .setBackgroundColor(Color.RED);
    }