三个问题

时间:2012-08-15 17:55:30

标签: android forms loops focusable

首先,我希望使用这样的循环取消选中所有8个复选框:

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

它不起作用,但你知道我的意思。怎么解决呢?

第二:使用Eclipse我设置了一个表单列表。在应用程序启动时,它会立即显示键盘并在编辑字段中聚焦?我希望键盘仅在用户触摸编辑字段后才会出现。

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

3 个答案:

答案 0 :(得分:3)

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

1 - 依赖ID [{1}},CheckBox0CheckBox1,......按顺序排列是非常危险的,也是不好的做法。在这种情况下,您应该使用CheckBox2;这将可靠地获取ID getIdentifier,然后CheckBox1等。

CheckBox2

2 - 您需要使用for (int i=1;i<8;++i){ CheckBox view1 = (CheckBox) findViewById(getResources().getIdentifier("CheckBox" + i, "id", getPackageName())); view1.setChecked(false); } 修饰符:

stateHidden

3 - 为此使用<activity android:name="com.example.NoKeyboardActivity" android:windowSoftInputMode="stateHidden" /> ; imeOptions是您要查找的内容,或者(根据评论),actionNone启用“完成”按钮。

actionDone

答案 1 :(得分:1)

对于每次构建后具有固定ID的资源,您必须在public.xml中声明资源,然后您可以按顺序访问ID。查看here

R.id.CheckBox0也是一个int,所以

findViewById(R.id.CheckBox0+ i)

在public.xml

中声明所有复选框后

对于活动清单中的第二个问题,添加 android:windowSoftInputMode="stateHidden"

第三: 我想你必须在android的布局中引用相同的edittext:nextFocusDown。 不确定这是否有用尝试

答案 2 :(得分:0)

1 - 请记住,这是Java而不是Javascript,你不能这样做(R.id.CheckBox0 + String.valueOf(i))。通常我会创建一个int数组,其中包含所有R.id并循环遍历它们。

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

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