有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将字符串变量转换为布局变量?

这是代码的一部分:

int buttonXa = 0, buttonXb = 4, layoutNum = (buttonXb - 1);
String layoutXNum = String.valueOf(layoutNum);
String layoutX;
LinearLayout layoutXab;
do {
    layoutX = "ll" + layoutXNum;
    layoutXab = (LinearLayout)layoutX;
    buildButtons(layoutXab, buttonXa, buttonXb);
    buttonXa += 4;
    buttonXb += 4;
    layoutNum += 1;
} while (buttonXa < 12);

为什么铸造不起作用?正确的代码是什么?您好@J.Knight和其他任何代码试图发送到“build buttons”函数,一个线性布局,其名称在“do while”循环中动态构建,第一次将布局称为ll3,然后是ll4,依此类推。。。该名称已生成并放入字符串变量中,但现在需要转换为线性布局变量。。。谢谢Emuna


共 (2) 个答案

  1. # 1 楼答案

    变量layoutX的类型为“String”
    变量layoutXab的类型为“LinearLayout”

    “LinearLayout”不是“String”的子类型,“String”也不是“LinearLayout”的子类型

    铸造是一种专门化或泛化一种类型的方式,这两种类型都不是另一种类型的专门化

  2. # 2 楼答案

    //Get the ID for R.layout.button1 
    int resID = context.getResources().getIdentifier("button1", "layout", context.getPackageName());
    //context could be an object of Activity too
    

    Remember that this way is slower than directly using the resource ids, especially when you have hundreds of such ids to convert from String to int.

    有关资源的更多信息,请参阅此链接https://developer.android.com/reference/android/content/res/Resources.html