我是Android編程和學習構建移動應用程序的新手。使用Android Studio並遇到此問題。 我有一個HashMap
,其中包含EditText
作爲值。但是,當我.get()
,然後嘗試.setEnabled()
EditText
它引發異常/錯誤。HashMap和EditText.setEnabled()
如果我將EditText
設置爲一個變量,然後.setEnabled()
它工作正常。有什麼不同?
CODE:
public static HashMap<String,EditText> GUESTS = new HashMap<String,EditText)();
GUESTS.put("CRAFT", ((EditText) view.findViewById(R.id.crafteGuest));
EditText craftGuest = (EditText) findViewById(R.id.craftGuest);
craftGuest.setEnabled("true"); // this works
GUESTS.get("CRAFT").setEnabled("true"); // this does NOT work
有什麼想法?
public void onClick(View view) {
switch(view.getTag().toString()) {
case "CRAFT" : {
if (!GUESTS.containsKey("CRAFT")) {
GUESTS.put("CRAFT", ((EditText) view.findViewById(R.id.craftGuest)));
}
GUESTS.get("CRAFT").setEnabled("true");
}
}
}
也許這裏代碼不夠。爲什麼GUESTS使用「view.findViewById」而另一個(工作)只使用「(隱含這個)。findViewById」?他們真的都得到同一個對象嗎?我的猜測並不是,而且你對客人置之不理。 – user1676075
我有幾個按鈕和編輯文本對,當你點擊按鈕,我想獲得配對editText句柄。然而,使用findViewById(...)需要編輯文本對象(在本例中爲R.Id.craftGuest)的「id」我希望能夠在數組中設置EditText對象,然後稍後使用該數組可以訪問配對的editText。 (如果有更好的方法來做到這一點,請讓我知道)。 –
*什麼是異常/錯誤?我不認爲你瞭解這個評論。 'view.findViewById(id)'和'findViewById(id)'是有區別的。您已經說過第二個作品,這意味着這裏的「視圖」不一樣 –