我该如何删除按钮?
我有一个带有我的按钮名称的字符串。 假设它叫做String A
String A = myButtonName;
现在,如果我想删除按钮:
layout.removeView(myButtonName);
这可行,但是,我不能在字符串上这样做。
我怎么能在我的字符串上做到这一点?
像这样,现在我收到一个错误,因为它是一个字符串:
layout.removeView(A);
如何使用与视图对应的字符串删除视图?
从理论上讲,我想将我的字符串强制转换为ViewGroup
简化问题:
我有一个字符串。 该字符串也是我的按钮的变量名称。 我可以使用字符串删除按钮吗?
你为什么不这样做?
View namebar = view.findViewById(R.id.namebar); ((ViewGroup) namebar.getParent()).removeView(namebar);
您无法直接将String
为View
或ViewGroups
但您可以尝试以下方法:
- 检查所有按钮名称并将其与您的按钮名称进行比较。 使用
button.getText()
获取按钮的文本,然后将其与按钮名称“myButton”进行比较。 - 如果找到匹配项,请使用
removeView(Button)
删除该按钮。 否则,请忽略。
首先,我无法理解为什么你必须反向从字符串中查找视图。 不过,无论你处于什么状况,我都在回答你的问题。
我也读了你的答案,它可能会给你想要的输出,但我觉得这种方法是错误的。
所以,你有一个具有按钮的id名称的String。 所以,你可以从字符串中获取它的resource_identifier(int)。 喜欢
String btnName = "btn_test"; int id = getResources().getIdentifier(btnName, "id", getPackageName()); Button btnTest = (Button)findViewById(id);
所以,一旦你拿着一个btnTest
拿着View
,你就可以删除它。 使用此方法,您无需对任何内容进行硬编码。 希望这可以帮助..
我知道了! 所以,因为我只有一个字符串,我只能检查该字符串是否等于该对象:
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;