【问题标题】:How to get a button by variable name using a string?如何使用字符串通过变量名获取按钮?
【发布时间】:2014-09-07 16:33:32
【问题描述】:

我的代码是这样的……

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,等等。

有什么想法吗?

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    不,那不是办法。你不能对变量名这样做(除非你使用reflection)。取而代之的是一个 Button 数组。

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

    稍后

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

    【讨论】:

    • 哦,是一个按钮数组!但是,如果我想根据字符串值(字符串值会改变)设置按钮的顺序,有没有办法做到这一点?跨度>
    • @user3947486 是的。一个数组列表在等着你:)
    【解决方案2】:

    只有两种方法:

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

    2. 像这样访问按钮resources(给定XML中按钮的ID是button1,button2等):

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

    【讨论】:

    • Eclipse 说 getResources 无法解析。我尝试导入,但没有可用的导入。我该怎么办?
    猜你喜欢
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 2022-12-15
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多