Java 整数赋值导致Android迭代错误

Java 整数赋值导致Android迭代错误,java,android,textview,Java,Android,Textview,我试图迭代26个文本视图(每个字母对应一个字母)。下面是我尝试的内容,我得到以下错误: java.lang.NumberFormatException: Invalid int: "R.id.A"". 我知道问题在于如何分配整数,但不确定如何更正 private void setupKeyBoard() { for(char letter = 'A'; letter <= 'Z';letter ++){ int letterID = Integer.parse

我试图迭代26个文本视图(每个字母对应一个字母)。下面是我尝试的内容,我得到以下错误:

java.lang.NumberFormatException: Invalid int: "R.id.A"".
我知道问题在于如何分配整数,但不确定如何更正

private void setupKeyBoard() {

    for(char letter = 'A'; letter <= 'Z';letter ++){

        int letterID = Integer.parseInt("R.id."+ letter); //This line is my issue
        Log.e("LetterID", Integer.toString(letterID));

        final TextView textView = (TextView) getView().findViewById(letterID);

        textView.setTextSize(20 * getResources().getDisplayMetrics().density);
        textView.setText(letter);
        final char finalLetter = letter;

        textView .setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                checkGuess(finalLetter);
                textView.setClickable(false);
                textView.setAlpha((float) .1);
            }
        });
    }
}
private void setupKeyBoard(){

for(char letter='A';letter
Integer.parseInt
不符合您的要求

您想要实现的目标可以通过以下方式实现:

请注意,这相当慢。您最好将这些ID存储在
int
数组中,并在其中循环

int[] arr = {R.id.A, R.id.B, ... };

for(char letter = 'A'; letter <= 'Z';letter ++){
    final TextView textView = (TextView) getView().findViewById(arr[letter-'A']);
    .....
}
int[]arr={R.id.A,R.id.B,…};

对于(char letter='A';尝试解析字符串本身的字母。“R.id.A”不是一个整数;它是资源的名称。实际上,您希望找到与资源关联的整数-我猜想,您需要反射才能找到它。int letterID=getResources().getIdentifier(string.valueOf(letter),“id”,getActivity().getPackageName());我得到ava.lang.RuntimeException:无法启动活动组件信息{com.example.greui.app/com.example.greui.app.MainActivity}:android.content.res.Resources$NotFoundException:String resource ID#0x41…正在将我的字母ID转换为小写?谢谢,我将执行数组。更好的主意不确定getResources为什么不工作?我现在就去实现数组。@Jethro\u Orange
getResources
正在工作。您的问题可能是
textView.setText(字母);
必须是
textView.setText(String.valueOf(字母));
哇,这是一个愚蠢的错误。谢谢你的解决方案奏效了。有时感觉就像我在用头撞砖墙。。。
int[] arr = {R.id.A, R.id.B, ... };

for(char letter = 'A'; letter <= 'Z';letter ++){
    final TextView textView = (TextView) getView().findViewById(arr[letter-'A']);
    .....
}