2
我在顯示DialogFragment
提示用戶提供輸入。我想驗證此輸入(不應該爲空),並在驗證失敗時顯示Toast
,而不關閉對話框。檢查DialogFragment中的EditText值
當前,當驗證失敗時顯示Toast,但對話框被取消。我如何防止這種情況?
DialogFragment類:
public class DialogFragmentAddNewFolder extends DialogFragment implements DialogInterface.OnClickListener {
private EditText etName;
private DialogFragmentAddNewFolderListener mListener;
public interface DialogFragmentAddNewFolderListener {
public void onAddNewFolderPositiveClick(Folder folder);
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View ourView = inflater.inflate(
R.layout.dialogfragment_add_note, null);
builder.setView(ourView);
etName = (EditText) ourView.findViewById(R.id.etAddFolder);
builder.setTitle(R.string.dialogfragment_add_folder_title);
builder.setPositiveButton(
R.string.dialogfragment_add_folder_pos_btn, this);
builder.setNegativeButton(
R.string.dialogframent_add_folder_neg_btn, this);
return builder.create();
}
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
String name = etName.getText().toString();
if (name.equals("")) {
Toast.makeText(getActivity(), "Provide a name", Toast.LENGTH_SHORT).show();
} else {
Folder folder = new Folder();
folder.setName(name);
mListener.onAddNewFolderPositiveClick(folder);
}
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.dismiss();
break;
}
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (DialogFragmentAddNewFolderListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ "Must implement DialogFragmentAddNewFolderListener.");
}
}
}
可能重複[如何防止關閉一個對話框,點擊一個按鈕時(http://stackoverflow.com/questions/2620444/how-to-prevent-a-dialog-from-closing-當-A-按鈕是點擊) – 2015-01-20 19:46:44