I'm displaying an DialogFragment
prompting for the user to provide input. I'd like to validate this input (should not be empty) and display a Toast
if the validation fails, without dismissing the dialog.
Currently, I display a Toast when the validation fails, but the dialog gets dismissed. How do I prevent this?
DialogFragment class:
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.");
}
}
}