2011-09-09 13 views
1

実際に私はダイアログボックスの値をチェックしていますが、有効ではない場合はダイアログボックスを閉じたくありません。残念なことにデフォルトでは、サブミットボタンを押すとダイアログボックスがシャットダウンします:(どうすればエスケープできますか? alertdialogのデフォルトの動作です??ボタンを押すとなぜダイアログボックスが閉じられますか?

LayoutInflater factory = LayoutInflater.from(EmailJavaAPI.this); 
final View textEntryView = factory.inflate(R.layout.usrpwsdialog,null); 
((EditText)textEntryView.findViewById(R.id.etxtUserName)).setText((((EditText)findViewById(R.id.editTextFrom)).getText()).toString()); 

final EditText usrName = (EditText)textEntryView.findViewById(R.id.etxtUserName); 
final EditText usrPws = (EditText)textEntryView.findViewById(R.id.etxtPws); 

//AlertDialog alert=new AlertDialog(EmailJavaAPI.this); 


return new AlertDialog.Builder(EmailJavaAPI.this) 
    .setTitle(R.string.kpsdomain) 
    .setView(textEntryView) 
    .setPositiveButton(R.string.dgbtnsubmit, 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, 
       int whichButton) { 
         userName = usrName.getText().toString().trim(); 
         userPws = usrPws.getText().toString().trim(); 
         ((EditText)findViewById(R.id.editTextFrom)).setText(userName); 

         if(userName.equals("")){ 
           textEntryView.findViewById(R.id.txtVWRUserName).setVisibility(View.VISIBLE); 
         } 
             if(userPws.equals("")){ 
              textEntryView.findViewById(R.id.txtVWRPws).setVisibility(View.VISIBLE); 
             } 
             if(!userName.equals("")&& !userPws.equals("")){ 
              Toast.makeText(EmailJavaAPI.this, "User Name and Password has been set up", Toast.LENGTH_SHORT).show(); 
             } 
             else{ 
              //***IMPORTANT*** 
              //Dialog Should be opened if this condition is true 
             } 
           } 
          }) 
        .setNegativeButton(R.string.dgbtnDiscard, 
          new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, 
             int whichButton) { 
            dialog.dismiss(); 
           } 
          }).create(); 

答えて

1

あなたは次のようにそれをカスタマイズする必要があります。あなたがremoveDialog(0)を呼び出すときには、ダイアログを削除します

@Override 
protected Dialog onCreateDialog(int id) { 

    LayoutInflater inflator = LayoutInflater.from(context); 
    View view = inflator.inflate(R.layout.yourview, null); 
    Button positive = (Button)view.findViewById(R.id.btn_positive); 
    Button negative = (Button)view.findViewById(R.id.btn_negative); 

    positive.setOnClickListener(new Button.OnClickListener(){ 
     public void onClick(View v) { 
      removeDialog(0); 
     } 
    }); 

    negative.setOnClickListener(new Button.OnClickListener(){ 
     public void onClick(View v) { 
      removeDialog(0); 
     } 
    }); 

    AlertDialog dialog = new AlertDialog.Builder(this).create(); 
    dialog.setView(view); 

    return dialog; 
} 

+0

私Thanks.let私はpositive.setOnClickListenerに(0)removeDialogを設定しなかった場合、私はポジティブなボタンのダイアログボックスを押したときにクリア...それは近いダイアログボックスは、あまりにも?実際に閉じられてはならないだろう。 –

+0

私はonCreateDialog(int id)をオーバーライドすると言った。あなたの問題を解決します。 –

+0

ありがとうVineet Shukla ... –

0

あなたのアラートをカスタマイズすることができますそれで、あなたは自分の指示を与えることができます(ボタンアクション)。ダイアログを閉じるには、電話をしなければなりません。

dialog.dismiss();

AlertDialog dialog = new AlertDialog.Builder(context).create(); 
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.your_layout, null); 
Button btn = (Button) layout .findViewById(R.id.btnid); 
btnSet.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     dialog.dismiss(); 
     } 
    } 
    ); 
dialog.setTitle("Alert Title"); 
dialog.setView(layout); 
dialog.show(); 
関連する問題