【问题标题】:How to get radio button's id and convert to string?如何获取单选按钮的 id 并转换为字符串?
【发布时间】:2014-05-30 02:59:35
【问题描述】:

我在 Android Studio 中工作并尝试获取所选单选按钮的 ID,然后将 ID 存储在字符串中。这可能吗?

我尝试用 .getId() 替换下面的 .getText() 方法,但它不允许我将其存储为字符串:

    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int checkedId)
        {
            RadioButton checkedRadioButton = (RadioButton) findViewById(checkedId);
            String text = checkedRadioButton.getText().toString();
            Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
        }
    });

【问题讨论】:

    标签: java android android-studio


    【解决方案1】:

    getId() 返回一个int - 与所有primitive types 一样,它没有toString()(或任何其他)方法。这是因为,虽然所有对象都有一个 toString() 方法,但基元不是对象 - 但幸运的是,Java 提供了 wrapper classes,即所有基元类型的 对象。在int的情况下,对应的包装类叫做Integer

     String text = (Integer)checkedRadioButton.getId().toString();
    

    在这里,我们将getId() 返回的int 显式转换为Integer 对象,然后在该对象上调用toString()

    或者,您可以利用autoboxing 让Java 自动为您处理“包装”:

    Integer id = checkedRadioButton.getId();
    String text = id.toString();
    

    请注意,getId() 仍然返回 int,但是因为您将 id 变量声明为 Integer,Java 会自动将返回值“装箱”到其包装类 - 因此是“自动装箱”。

    你也可以使用静态Integer.toString()方法:

    String text = Integer.toString(checkedRadioButton.getId())
    

    但请注意,在后台执行相同的操作。

    【讨论】:

    • 谢谢你,我只是想知道我是否在 xml 文件中为单选按钮设置了 ID,这与 getId() 返回的 ID 不同吗?因为我已将这些 id 设置为字符串,而这些正是我想要获取的 id。
    • @user3461659 是和否:您在 XML 文件中设置的 id 在编译时转换为 int 值。有关一些有用的见解,请参阅此问题的答案:stackoverflow.com/questions/14045131/…
    【解决方案2】:

    除了@drewmore 解决方案,您还可以使用

    String text = String.valueOf(checkedRadioButton.getId());

    【讨论】:

      猜你喜欢
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      相关资源
      最近更新 更多