ログインダイアログに使用する DialogFragment を作成しています。ユーザー ID として使用される電子メール アドレスのオートコンプリートが必要です。ここで良いチュートリアルを見つけましたが、DialogFragment の使用については実際には扱っていませんでした。
私の現在のコードは次のとおりです。
DialogFragment dialog = new LoginDialogFragment();
AutoCompleteTextView emailLoginId = (AutoCompleteTextView) findViewById(R.id.login_user_id);
if (null == emailLoginId) {
Log.d(tag, "EmailLoginId is null!");
}
// get list of drivers
ArrayAdapter<String> driverList = dbHelper.getAllDriverEmailStringAdapter();
Log.d(tag, "Driver List size is " + driverList.getCount());
emailLoginId.setAdapter(driverList);
dialog.show(getSupportFragmentManager(), "LoginDialogFragment");
ご覧のとおり、ダイアログを作成してから、名前のリストを添付しています。残念ながら、これにより次の行でヌルポインター例外が発生します。
emailLoginId.setAdapter(driverList);
これはおそらく私の側の恥ずかしいほど単純な見落としであると確信していますが、それが私を前進させるなら、それは問題ありません.
LoginDialogFragment の onStart() および onCreateView() 部分で、適切な変更を加えて、この同じコードを試しました。いずれの場合も、ログイン ID フィールドまたはパスワード フィールドのいずれかのフィールドが見つかりません。
onStart() および onCreateView() ルーチン内から呼び出すときは、次を使用しました。
AutoCompleteTextView emailLoginId = (AutoCompleteTextView) getActivity().findViewById(R.id.login);
それは間違っていますか?
問題を引き起こしている可能性のある他の唯一のことは、dialog.show(getSupportFragmentManager(), "LoginDialogFragment") が呼び出されるまでダイアログが実際に作成されないことですが、それはドキュメントと一致しません。 d は、これが少なくとも onStart() ルーチンで機能すると考えています。
お時間をいただきありがとうございます。