Android:使用带有定义字符串集的findViewById()

时间:2018-02-20 02:48:15

标签: android findviewbyid

我读了几篇关于堆栈溢出的博客,这些博客有一个解决这个主题的问题。但是,在实施这些解决方案时,作为初学者无法解决问题,需要帮助来解决这个问题。我们可以创建一个EditText类型的数组吗?这是代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_registration);

    String[] referenceVariables = {"firstName", "lastName", "uid", "password", "reenterPassword", "emailId"};
    String[] reference = {"enterFirstName","enterLastName","enterUid","enterPassword","enterEmailId"};

    for(int i=0; i<reference.length;i++){
        int resID = (getResources().getIdentifier(reference[i], "id", getPackageName()));
        referenceVariables[i] = ((EditText) findViewById(resID));
    }
}

最终我想要的是优化和短格式:

firstName = findViewById(R.id.enterFirstName);
lastName = findViewById(R.id.enterLastName);
uid = findViewById(R.id.enterUid);
password = findViewById(R.id.enterPassword); 
reenterPassword = findViewById(R.id.reenterPassword);
emailId = findViewById(R.id.enterEmailId);

提前致谢,祝你有个美好的一天!

1 个答案:

答案 0 :(得分:0)

必须将

referenceVariables[i]分配给String。您已分配给EditText,因此无法编译。

是的,你可以创建一个EditText或View对象的数组

尝试制作此数组

EditText[] texts = new EditText[reference.length]:

并在其中分配元素

如果您想要命名元素,请使用HashMap<String, EditText>