2012-08-15 72 views
0

首先,我想用一个循环这样的设置选中所有的复选框8:三个问题

for (int i=1;i<8;++i){ 
    CheckBox view1 = (CheckBox) findViewById(R.id.CheckBox0+String.valueOf(i)); 
    view1.setChecked(false); 
    } 

这是行不通的,但你的想法是什么意思。如何解决它?

第二:使用Eclipse我设置了一个表单列表。什么使应用程序启动时,它立即显示键盘,并将重点放在编辑字段?我希望键盘只有在用户触摸编辑字段后才会出现。

第三:如何设置编辑字段的属性,当用户触摸输入时,焦点不会传递到下一个编辑字段。提前致谢。

回答

1

对于每次构建后都有固定标识的资源,您必须在public.xml中声明资源,然后才能顺序访问标识。检查here

而且R.id.CheckBox0是一个int这样做

findViewById(R.id.CheckBox0+ i) 

已宣布public.xml

对于该活动的第二个问题,所有的复选框清单中添加后 android:windowSoftInputMode="stateHidden"

第三: 我想你将不得不引用相同的编辑文本在android:nextFocusDown布局中。 不确定这是否可以试试

+1

您不能保证'R.id.CheckBox0 +我会工作。 R.java中的'ids'是在添加不同资源时生成的。 – Squonk 2012-08-15 18:10:29

+0

@squonk这就是为什么需要将id添加到public.xml中。 public.xml仅用于提供固定ID。那就是框架如何保证android.r.id的兼容性。检查链接http://stackoverflow.com/questions/9348614/what-is-the-use-of-the-res-values-public-xml-file-on-android – nandeesh 2012-08-15 18:12:50

+0

好吧,我错过了关于使用公共.xml,但我个人并不认为这是一种可行的方法。按照Eric在他的回答中所建议的,我更倾向于使用'getIdentifier(...)'。 – Squonk 2012-08-15 18:20:09

0

1-请记住,这是Java而不是Javascript,你不能这样做(R.id.CheckBox0 + String.valueOf(i))。通常情况下,我创建一个int数组,并且通过它们遍历所有的R.id。

2 - 你也可以使用android:windowSoftInputMode =“stateUnchanged”来隐藏键盘,如果它已经显示。

3 - 就是它应该是这样的,但是你可以在edittext上使用属性android:imeOptions =“actionNone”,所以输入按钮什么都不会做。

+0

是的,我也想过做一个阵列,但我认为有更优雅的方式。不管怎么说,还是要谢谢你。 – JoeCoolman 2012-08-16 02:51:56

3

首先,一起提出多个问题并不好;当他们只知道其中一种解决方案时,它会阻止人们回答。

- 依托的ID CheckBox0CheckBox1CheckBox2,......是为了是非常危险的,是不好的做法。在这种情况下,您应该使用getIdentifier;这将可靠地获取ID CheckBox1,然后CheckBox2等。

for (int i=1;i<8;++i){ 
    CheckBox view1 = (CheckBox) findViewById(getResources().getIdentifier("CheckBox" + i, "id", getPackageName())); 
    view1.setChecked(false); 
} 

- 你需要使用这个stateHidden修改:

<activity 
    android:name="com.example.NoKeyboardActivity" 
    android:windowSoftInputMode="stateHidden" /> 

- 使用imeOptions本; actionNone是您要查找的内容,或者(根据评论),actionDone以启用“完成”按钮。

<TextView 
    ... 
    android:imeOptions="actionNone" /> 
+0

ID可以使用public.xml可靠地分配,这不是风险 – nandeesh 2012-08-15 18:18:24

+0

@nandeesh但是,它们不能迭代通过。 – Eric 2012-08-15 18:21:29

+0

如果您在public.xml中将CheckBox0连续编号分配给CheckBox8,那么您可以通过将我添加到CheckBox0来进行迭代 – nandeesh 2012-08-15 18:23:28