2017-02-18 8 views
0

enter image description hereダイアログボックスで一度だけ

enter image description here

をのみ、誤った値を表示する方法を私はのEditTextで、ユーザからの入力を取っています。今、私は、他のテキストボックスに希望の出力を表示するが、ユーザーが間違った値を入力すると、間違った値をすべてダイアログボックスが開き、ボックスが何度か間違った値を検出するまで繰り返される。たとえば、編集ボックスに3つの間違った値を追加すると、ボックスが3回開いています。

String s=editText1.getText().toString(); 
    String z[]=s.split("\\s"); 
    editText2.setText(""); 
    String a = ""; 
    String b = " Not valid"; 

    for(int i=0;i<z.length;i++) 
    { 
     int j=Integer.parseInt(z[i]); 

     if(j>=65 && j<=97) 
     { 
      editText2.setText(editText2.getText() + "" + String.valueOf((char) j)); 
     } 
     else { 
      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 

       a += z[i]+"\t"; 

      alertDialogBuilder.setTitle("Error"); 
      alertDialogBuilder.setCancelable(false); 
      alertDialogBuilder.setMessage(a+b) 
        .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 

      AlertDialog alertDialog = alertDialogBuilder.create(); 
      alertDialog.show(); 
     } 
+0

のでごalertDialog.show(); forループの中にあります – user3040153

+0

ループの外側にそれを保ちます あなたのメッセージを準備して、alertDialog.show()を呼び出してください。ループが終了しました – user3040153

+0

@ user3040153 forループの外にいてalertDialogue.show()を呼び出すと、ユーザーが正しい値を入力してもまだ1度開いています – Rohan

答えて

1
boolean is_open_dialog=false; 

    for(int i=0;i<z.length;i++) 
    { 
     int j=Integer.parseInt(z[i]); 

     if(j>=65 && j<=97) 
     { 
      editText2.setText(editText2.getText() + "" + String.valueOf((char) j)); 
     } 
     else { 

      is_open_dialog = true; 
      a += z[i]+"\t"; 

     } 
    } 

    if(is_open_dialog){ 


     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
     alertDialogBuilder.setTitle("Error"); 
     alertDialogBuilder.setCancelable(false); 
     alertDialogBuilder.setMessage(a+b) 
       .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.cancel(); 
        } 
       }); 

     AlertDialog alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 

    } 
+0

これは@Rohanに役立つと思います –

+0

なぜブール値が赤で強調表示されていますか?このエラーを修正するには – Rohan

+0

申し訳ありませんブール値を使用してください。スペルの間違い。 –