DialogFragment から派生したカスタム ダイアログがあります。
ユーザーが [OK] ボタンをクリックすると、画面に表示されている情報を保存する必要があります。
そこで、PositiveButton 呼び出しを却下し、onDismiss メソッドを実装してデータを保存しました。
onDismiss メソッドでは、ダイアログ上にある editView からデータを取得する必要があります。getView().findViewByID を使用して editView を取得していますが、メソッド GetView() は null を返します。
これが私のコードです:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.dialog_signin, null))
.setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().dismiss();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
});
return builder.create();
}
@override
public void onDismiss(){
EditView view = (EditView)getView().findViewByID(R.id.edit);
}
OnCreateDialog で膨らませたビューを属性として保存できることはわかっていますが、それは私には正しくないようです。
onDismiss で画面からビューを取得する正しい方法は?
Ps: 私が働いている場所では、コードを投稿することが許可されていないため、Google からコードを取得し、コードにできるだけ近づけるように変更しました。