私はAndroidプログラミングやモバイルアプリケーションを構築するための学習には初めてです。 Android Studioを使用してこの問題に遭遇しました。 私は値としてEditText
を含むHashMap
を持っています。しかし、私が.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"だけを使用しますか?彼らは本当に両方とも同じオブジェクトを取得していますか?私の推測ではなく、あなたがゲストに "null"か何かを入れているということです。 – user1676075
私はボタンをクリックすると、editTextと対になるハンドルを取得したいという、いくつかのボタンとedittextペアを持っています。しかし、findViewById(...)を使うと、edittextオブジェクトの "id"(この場合はR.Id.craftGuest)が必要になります。私は、配列内にEditTextオブジェクトを設定してから、その配列を後で使用できるようにしたいと考えていました対になっているeditTextにアクセスできます。 (これを行うより良い方法があれば、私に知らせてください)。 –
*例外/エラーは何ですか?私はあなたがそのコメントを理解したとは思わない。 'view.findViewById(id)'と 'findViewById(id)'には違いがあります。あなたは2番目の作品を言いました。つまり、ここの「ビュー」は同じではありません。 –