私が書いている Android アプリケーションがあります。各アイテムにこのレイアウトを使用してデータをロードするようにすべて設定された ListActivity があります。
私のデータ アダプターは問題なくバインドされ、リストから項目が選択されたときにこのメソッドが呼び出されるように設定しました。
private void showPasswordBox(View v) {
EditText passwordBox = (EditText)v.findViewById(R.id.hidden_box);
Button passwordSubmit = (Button)v.findViewById(R.id.hidden_box_submit);
passwordSubmit.setText("Login");
passwordSubmit.setVisibility(View.VISIBLE);
passwordBox.setFocusableInTouchMode(true);
passwordBox.setHint(R.string.password);
passwordBox.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
passwordBox.setVisibility(View.VISIBLE);
}
これには、EditText と Button (私のレイアウトでは hidden_box と hidden_box_submit) を表示する効果があります。それはまさに私が欲しかったものです。
ただし、ユーザーが新しく表示された EditText (hidden_box) をタップすると問題が発生します。IME がポップアップし、hidden_box はすぐにフォーカスを失います。したがって、IME で入力された内容は EditText には表示されません。代わりに、入力したものがキーボードの上に灰色の文字で表示され、IME が閉じられたときに画面の下部に残るという、この奇妙なことを行っています。IME が一時的な非表示ボックスに入力しているようです。
IME が表示された後にユーザーが EditText をタップすると、アプリケーションは正常に動作します。IME に入力されたものはすべて EditText に表示され、IME を閉じてもそのまま残ります。
IMEがポップアップすると(ユーザーがEditTextをタップするとすぐに表示されます)、アプリケーションとの関連付けが完全に解除され、IMEに指示しない限り、IME la-la landで処理されます。キーボードを入力して閉じる前に、EditText をタップして EditText を削除します。ポップアップしたらすぐに EditText に直接入力するように、通常どおりに動作させるにはどうすればよいですか?