在AlertDialog中验证EditText

时间:2018-10-04 11:56:07

标签: android firebase firebase-realtime-database

我正在尝试验证TextInputLayout中的AlertDialog.Builder。请帮助我。我试图以一种简单的方式来验证它,但是当按下肯定按钮时,什么也没发生。

谢谢

    private TextInputLayout txtUpdateWeight;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getContext(), R.style.MyDialogTheme);

    final FirebaseDatabase db = FirebaseDatabase.getInstance();

    LayoutInflater inflater = getActivity().getLayoutInflater();
    View view = inflater.inflate(R.layout.layout_update_weight_dialog, null);

    txtUpdateWeight = view.findViewById(R.id.tlUpdateWeight);

    builder.setView(view)
            .setTitle("Update Weight")
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            })
            .setPositiveButton("Send", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                    if (!validateField()) {
                        return;
                    }
                    String etWeight = txtUpdateWeight.getEditText().getText().toString().trim();

                    DatabaseReference myDB = db.getReference().child("Additional details");
                    Map<String, Object> updates = new HashMap<>();

                    updates.put("weight", etWeight);

                    myDB.updateChildren(updates);

                    Toast.makeText(getContext(), "Weight updated Successfully", Toast.LENGTH_SHORT).show();
                }
            });

    return builder.create();
}

这是我的验证功能

public boolean validateField() {
    String etWeight = txtUpdateWeight.getEditText().getText().toString().trim();

    if (etWeight.isEmpty()) {
        txtUpdateWeight.setError("Enter your weight");
        return false;
    } else {
        txtUpdateWeight.setError(null);
        return true;
    }
}

2 个答案:

答案 0 :(得分:3)

您应该使用TextUtils

  if(TextUtils.isEmpty(etWeight))

注意

您应该使用 TextInputEditText 而不是 TextInputLayout

我认为您的XML是

<android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
           >

            <android.support.design.widget.TextInputEditText
                android:id="@+id/your_id"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />

        </android.support.design.widget.TextInputLayout>

然后

 String etWeight = textInputEditTextOBJ.getText().toString().trim();

答案 1 :(得分:1)

尝试一下

public boolean validateField() {
String etWeight = txtUpdateWeight.getEditText().getText().toString().trim();

if (TextUtils.isEmpty(etWeight)) {
    txtUpdateWeight.setError("Enter your weight");
    return false;
} else {
    txtUpdateWeight.setError(null);
    return true;
}}

还添加其他

   if (!validateField()) {
                        return;
                    }else{
                    String etWeight = txtUpdateWeight.getEditText().getText().toString().trim();

                    DatabaseReference myDB = db.getReference().child("Additional details");
                    Map<String, Object> updates = new HashMap<>();

                    updates.put("weight", etWeight);

                    myDB.updateChildren(updates);

                    Toast.makeText(getContext(), "Weight updated Successfully", Toast.LENGTH_SHORT).show();
}