我有一个带有我的按钮名称的字符串。假设它被称为String A
。
String A = myButtonName;
现在,如果我想删除按钮:
layout.removeView(myButtonName);
这可行,但是,我不能在字符串上这样做。
我怎样才能在我的字符串上做到?
像这样,现在我收到一个错误,因为它是一个字符串:
layout.removeView(A);
如何使用与视图对应的字符串删除视图?
理论上,我想将我的字符串强制转换为ViewGroup
简化问题:
我有一个字符串。该字符串也我的按钮的变量名称。 我可以使用字符串删除按钮吗?
答案 0 :(得分:0)
为什么不这样做?
View namebar = view.findViewById(R.id.namebar);
((ViewGroup) namebar.getParent()).removeView(namebar);
答案 1 :(得分:0)
我明白了!所以,因为我只有一个字符串,所以我可以检查该字符串是否等于该对象:
if(myButtonName.equals("Blue")){
View myView = (View) findViewById(R.id.Blue);
((ViewManager)v.getParent()).removeView(v);
}
然后我可以手动删除对象本身。因为,正如Sai所提到的,不可能用字符串对象删除视图;我通过if语句检查后删除了视图,并替换了对象。
您也可以使用开关:
switch(hello) {
case "Blue":
View myView = (View) findViewById(R.id.Blue);
((ViewManager) v.getParent()).removeView(v);
break;
答案 2 :(得分:0)
您无法直接将String
投射到View
或ViewGroups
,但您可以尝试以下方法:
button.getText()
获取按钮的文本,然后将其与之进行比较
您的按钮名称“myButton”。removeView(Button)
删除该按钮。
否则,忽略。答案 3 :(得分:0)
首先,我无法理解为什么你必须反向从字符串中查找视图。不过,无论你处于什么状况,我都在回答你的问题。
我也读了你的答案,它可能会给你想要的输出,但我觉得这种做法是错误的。
因此,您有一个具有按钮ID名称的String。所以,你可以从字符串中获取它的resource_identifier(int)。像
String btnName = "btn_test";
int id = getResources().getIdentifier(btnName, "id", getPackageName());
Button btnTest = (Button)findViewById(id);
因此,一旦您btnTest
持有View
,就可以将其删除。使用此方法,您无需对任何内容进行硬编码。希望这会有所帮助..