获取ResourceId以获取Android中以编程方式创建的控件

时间:2014-02-18 05:46:15

标签: android

我通过阅读xml

以实用的方式在android中创建了控件

例如

CheckBox checkbox = new CheckBox(this);
checkbox.setText("Text");

我想在后期动态地获取控件中的值

View view = this.findViewById(resId);
bool checked = ((CheckBox)view).isChecked();

如何“实际”为实际创建的控件“resId”。 我尝试使用checkbox.getId(),但它返回0

2 个答案:

答案 0 :(得分:1)

您可以使用checkbox.setID(25)设置自定义ID(例如),您需要提供唯一ID。您可能遇到的问题是,与其他控件存在ID冲突(如果您还使用布局XML),因为ID会自动生成。
我建议您将checkbox变量保留为您班级的成员,以便以后可以访问它。

答案 1 :(得分:1)

您最好保留对控件的引用,并使用它来设置值。

   Map<String, CheckBox > checkBoxes = new HashMap<String, CheckBox >();
   ...
   checkBoxes.put("checkBox1", new CheckBox(this));
   ...
   CheckBox checkbox = checkBoxes.get("checkBox1");

但是如果你真的想要id,你可以通过setId方法设置你的自定义id,如@Merlevede所建议,但让android生成id以避免冲突。创建一个xml资源项:

   <item type="id" name="your_super_puper_id"/>

然后使用它:xxx.setId(R.id.your_super_puper_id)

要查找View,您可以使用标记。使用setTag方法,您可以将任何对象附加到视图,然后使用该对象通过findViewWithTag方法查找视图。

   String superPuperStringId = "checkBox1";
   someView.setTag(superPuperStringId);
   ...
   view = someViewGroup.findViewWithTag(superPuperStringId);

您也可以通过xml创建复选框并在那里指定ID。