检查所有edittext是否已填满并显示警告消息

时间:2018-03-05 21:44:34

标签: android

我有9个edittext。每个edittext都是正方形。我查看是否所有edittext都有值,然后显示警告消息而不点击任何按钮。

我尝试使用此代码,但它没有运行。

任何帮助都将不胜感激。

 public int Summ(int x, int y, int z) {
    int sum = 0;

sum = x + y + z;
    return sum;
}
 private void alertDialogLost()
{
    int a= Integer.parseInt(et1.getText().toString());
    int b = Integer.parseInt(et2.getText().toString());
    int c = Integer.parseInt(et3.getText().toString());



    int d = Integer.parseInt(et4.getText().toString());
    int e = Integer.parseInt(et5.getText().toString());
    int f = Integer.parseInt(et6.getText().toString());


    int g = Integer.parseInt(et7.getText().toString());
    int h = Integer.parseInt(et8.getText().toString());
    int k = Integer.parseInt(et9.getText().toString());
    if ((Summ(a,b,c)== Solution)&&(Summ(d,e,f)== Solution)&&(Summ(g,h,k)==Solution)&&
            (Summ(a,d,g)==Solution)&&(Summ(b,e,h)== Solution)&&(Summ(c,f,k)==Solution)
            &&(Summ(a,e,k)==Solution)&&(Summ(c,e,g)==Solution))

    {

        AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
        View view1 = LayoutInflater.from(MainActivity.this).inflate(R.layout.alertdiag, null);
        TextView title = (TextView) view1.findViewById(R.id.title);
        TextView message = (TextView) view1.findViewById(R.id.message);
        ImageView icone = (ImageView) view1.findViewById(R.id.icone);

        title.setText("Result");
        icone.setImageResource(R.drawable.smilega);
        message.setText("you have winner");

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

                Intent intent=new Intent(MainActivity.this,Main2Activity.class);

                startActivity(intent);
                finish();
            }
        });

        builder1.setView(view1);
        builder1.setCancelable(false);
        AlertDialog alertDialog1 = builder1.create();
        alertDialog1.show();
    }
}

1 个答案:

答案 0 :(得分:0)

如果您只想显示AlertDialog所有九个EditText字段中包含值的TextWatcher,那么使用EditText可能会有效。

首先,让我们开始让自己更轻松。我们会将每个ArrayList添加到forEach,因此我们可以使用List<EditText> editTextArrayList= new ArrayList<>();; editTextArrayList.add(et1); editTextArrayList.add(et2); editTextArrayList.add(et3); editTextArrayList.add(et4); editTextArrayList.add(et5); editTextArrayList.add(et6); editTextArrayList.add(et7); editTextArrayList.add(et8); editTextArrayList.add(et9); 循环遍历它们:

EditText

然后,让我们设置一个迭代所有九个private void checkAllEditTexts() { boolean allFilled = true; for (EditText editText : editTextArrayList) { if (editText.getText().toString().isEmpty()) { allFilled = false; break; } } if (allFilled) { // show your AlertDialog } } 字段的方法,检查每个字段是否有值。如果其中任何一个没有,AlertDialog将不会显示:

TextWatcher

然后我们设置了checkAllEditTexts(),如果在我们将分配给它的EditText字段上更改了任何文字,则会调用private TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { checkAllEditTexts(); } }; 方法:

EditText

最后,在我们将ArrayList字段添加到forEach的位置下方,我们设置TextWatcher循环以添加List<EditText> editTextArrayList= new ArrayList<>();; editTextArrayList.add(et1); editTextArrayList.add(et2); editTextArrayList.add(et3); editTextArrayList.add(et4); editTextArrayList.add(et5); editTextArrayList.add(et6); editTextArrayList.add(et7); editTextArrayList.add(et8); editTextArrayList.add(et9); for (EditText editText : editTextArrayList) { editText.addTextChangedListener(textWatcher); }

AlertDialog

...只要所有九个文本字段都有值,就应显示{{1}}。