2012-08-15 70 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