【问题标题】:Validate an EditText in an AlertDialog在 AlertDialog 中验证 EditText
【发布时间】:2018-10-04 11:56:06
【问题描述】:

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

谢谢

    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;
    }
}

【问题讨论】:

标签: android firebase firebase-realtime-database


【解决方案1】:

你应该使用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();

【讨论】:

  • 我觉得和他一样。
  • @AliAhmed 我认为用户应该使用 TextInputEditText 。
  • 不使用TextUtils 并没有解决问题。还有其他建议吗?
  • 是的。刚刚看到,他做错了。他应该使用TextInputEditText,没有TextInputLayout
  • @OoMaRjOhUr 你应该从TextInputEditText获取价值
【解决方案2】:

试试这个

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();
}

【讨论】:

猜你喜欢
  • 2017-03-08
  • 1970-01-01
  • 2012-07-06
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 2013-08-05
  • 2017-07-09
  • 1970-01-01
相关资源
最近更新 更多