我该如何删除按钮?

时间:2015-11-26 05:43:03

标签: java android arrays xml performance

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

String A = myButtonName;

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

 layout.removeView(myButtonName);

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

我怎样才能在我的字符串上做到?

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

 layout.removeView(A);

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

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

简化问题:

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

4 个答案:

答案 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投射到ViewViewGroups,但您可以尝试以下方法:

  • 检查所有按钮名称并将其与您的按钮名称进行比较。使用 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,就可以将其删除。使用此方法,您无需对任何内容进行硬编码。希望这会有所帮助..