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

Java 如何将字符串变量转换为布局变量?,java,android,string,layout,casting,Java,Android,String,Layout,Casting,这是代码的一部分: 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

这是代码的一部分:

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);

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

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

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);
“LinearLayout”不是“String”的子类型,“String”也不是“LinearLayout”的子类型

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);
铸造是一种专门化或泛化一种类型的方式,这两种类型都不是另一种类型的专门化

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);
//Get the ID for R.layout.button1 
int resID = context.getResources().getIdentifier("button1", "layout", context.getPackageName());
//context could be an object of Activity too
记住,这种方式比直接使用资源ID慢, 特别是当您有数百个这样的ID要从字符串转换时 到int

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);

有关资源的更多信息,请参阅此链接

什么是不起作用的铸造?请显示完整的代码和错误消息。这两个类的类层次结构是如何相互关联的,您为什么希望它工作?您到底想实现什么?我能想到一些你可能会尝试在这里做的不同的事情,以及不能这样做的原因,但我解释每个场景是在浪费时间。铸造不是问题所在,你手上还有更大的问题。HI there@J.Knight和其他任何代码试图发送到build buttons函数,一个线性布局,其名称在do while循环中动态生成,第一次将布局称为ll3,然后称为ll4,依此类推…该名称已构建并放入字符串变量中,但现在需要转换为线性布局变量。。。谢谢Emunah ok,这在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);