【问题标题】:How can I remove button?如何删除按钮?
【发布时间】:2016-02-29 02:51:43
【问题描述】:

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

String A = myButtonName;

现在,如果我想通过以下方式删除按钮:

 layout.removeView(myButtonName);

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

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

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

 layout.removeView(A);

如何删除带有与视图对应的字符串的视图?

理论上,我想将我的字符串类型转换为 ViewGroup


简化问题:

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

【问题讨论】:

  • 你的名字是什么意思?你是指变量名,还是按钮上的文字?
  • 你的字符串只是保存一个变量,它是一个字符串,而不是一个按钮
  • 发布您的布局代码以及如何获取字符串名称
  • @MikeM。名称是指按钮的名称。是的,变量名。
  • @SaiPhani 例如,Button myButtonName。现在我正在尝试根据按钮的字符串删除按钮

标签: java android arrays xml performance


【解决方案1】:

你为什么不这样做呢?

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

【讨论】:

  • 他没有一个视图对象开始,他正在尝试删除一个带有字符串对象的视图
  • 是的...他可以这样做...为什么要采取艰难的方式?他有什么要求??
  • 我不能这样做。问题中提到,我只有一个String,我想根据字符串删除视图组
  • @SaiPhani 我有一个字符串。该字符串也是我的按钮的变量名。我可以使用字符串删除按钮吗?
  • 如果你有视图并想删除它.​​...获取视图并删除它为什么要使用字符串??
【解决方案2】:

您不能直接将String 转换为ViewViewGroups,但您可以试试这个方法:

  • 检查所有按钮名称并将其与您的按钮名称进行比较。采用 button.getText() 获取按钮的文本,然后将其与 您的按钮名称“myButton”。
  • 如果找到匹配项,请使用您的removeView(Button) 删除该按钮。 否则,请忽略。

【讨论】:

    【解决方案3】:

    首先,我不明白为什么您必须反向从字符串中查找视图。不过,无论您处于何种情况,我都会回答您的问题。

    我也看了你的回答,它可能会给你想要的输出,但我觉得方法是错误的。

    所以,您有一个带有按钮 id 名称的字符串。因此,您可以从字符串中获取它的 resource_identifier(int) 。喜欢

    String btnName = "btn_test";
    int id = getResources().getIdentifier(btnName, "id", getPackageName());
    Button btnTest = (Button)findViewById(id);
    

    所以,一旦你有一个btnTest 持有View,你就可以删除它。使用这种方法,您无需对任何内容进行硬编码。希望这会有所帮助..

    【讨论】:

      【解决方案4】:

      我明白了!所以,因为我只有一个字符串,所以我可以检查该字符串是否等于对象:

      if(myButtonName.equals("Blue")){
      
                          View myView = (View) findViewById(R.id.Blue);
                          ((ViewManager)v.getParent()).removeView(v);
      
                      }
      

      然后我可以手动删除对象本身。因为,正如 Sai 所提到的,不可能删除带有字符串对象的视图;在通过 if 语句检查视图并替换对象后,我刚刚删除了视图。

      你也可以使用switch:

        switch(hello) {
                      case "Blue":
      
                          View myView = (View) findViewById(R.id.Blue);
                          ((ViewManager) v.getParent()).removeView(v);
      
                          break;
      

      【讨论】:

        猜你喜欢
        • 2014-05-08
        • 2012-04-22
        • 2021-05-03
        • 1970-01-01
        • 2021-11-03
        • 2017-12-31
        • 1970-01-01
        • 2014-04-18
        • 1970-01-01
        相关资源
        最近更新 更多