我该如何删除按钮?

我有一个带有我的按钮名称的字符串。 假设它叫做String A

 String A = myButtonName; 

现在,如果我想删除按钮:

  layout.removeView(myButtonName); 

这可行,但是,我不能在字符串上这样做。

我怎么能在我的字符串上做到这一点?

像这样,现在我收到一个错误,因为它是一个字符串:

  layout.removeView(A); 

如何使用与视图对应的字符串删除视图?

从理论上讲,我想将我的字符串强制转换为ViewGroup


简化问题:

我有一个字符串。 该字符串也是我的按钮的变量名称。 我可以使用字符串删除按钮吗?

你为什么不这样做?

 View namebar = view.findViewById(R.id.namebar); ((ViewGroup) namebar.getParent()).removeView(namebar); 

您无法直接将StringViewViewGroups但您可以尝试以下方法:

  • 检查所有按钮名称并将其与您的按钮名称进行比较。 使用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;