DialogFragment をサブクラス化して、入力フィールドをユーザーに表示します。
ユーザーが入力を提供しない場合、ダイアログを開いたままにして、入力フィールドにエラーを表示したいと思います。入力フィールドが空かどうかに関係なく、ユーザーが肯定的な「保存」ボタンを押すと、ダイアログは自動的に閉じられます。
このデフォルトの動作をオーバーライドするにはどうすればよいですか?
コード スニペット (完全なコードは非常に長いですが、アイデアは得られます):
public class SurveySingleQuestionDialog extends DialogFragment implements DialogInterface.OnClickListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
return (builder.setTitle(mArgs.getString("question_body"))
.setView(layout)
.setPositiveButton(R.string.save, this)
.setNegativeButton(android.R.string.cancel, null)
.setCancelable(false)
.show());
}
@Override
public void onClick(DialogInterface dialog, int which) {
if(validInputs()){
//dismiss dialog and save inputs
}
else{
//show error on input field
}
}
}
なにか提案を?