4

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

}

}

}

なにか提案を?

4

1 に答える 1

2

setNegative / setPositive ボタンは、コールバックが返された後にダイアログを閉じるように設計されていると思います。ビューに独自のボタンを含めて、ダイアログを自分で閉じる方がよいでしょう。

于 2012-10-29T14:51:53.747 に答える