0

首先,我想使用这样的循环设置未选中的所有 8 个复选框:

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

它不起作用,但你明白我的意思。怎么解决?

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

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

4

3 回答 3

3

首先,一起问多个问题是不好的;当人们只知道一种解决方案时,它会阻止人们回答。

1 - 依靠 ID CheckBox0, CheckBox1, CheckBox2, ... 来保持秩序是非常危险的,而且是不好的做法。在这种情况下,您应该使用getIdentifier; 这将可靠地获取 IDs CheckBox1, thenCheckBox2等。

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

2 - 您需要为此使用stateHidden修饰符:

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

3 -imeOptions用于此;actionNone是您正在寻找的那个,或者(根据评论)actionDone启用“完成”按钮。

<TextView
    ...
    android:imeOptions="actionNone" />
于 2012-08-15T18:14:25.090 回答
1

每次构建后资源都有固定的 id,你必须在 public.xml 中声明资源,然后你可以顺序访问 id。在这里检查

R.id.CheckBox0 也是一个 int 也是如此

findViewById(R.id.CheckBox0+ i)

在 public.xml 中声明所有复选框之后

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

第三:我认为您必须在 android:nextFocusDown 的布局中引用相同的编辑文本。不确定这是否可行,试一试

于 2012-08-15T18:03:13.380 回答
0

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

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

3 - 这就是它应该的方式,但你可以在edittext上使用属性android:imeOptions =“actionNone”,所以输入按钮不会做任何事情。

于 2012-08-15T18:13:46.047 回答