2011-09-09 55 views
1

其实我正在检查我的对话框中的一些值,如果他们是无效的我不想解雇我的对话框。不幸的是默认情况下当我按下提交按钮我的对话框得到关闭:(我怎么能逃脱? ??正按按钮为什么dialogbox关闭?

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

这就是alertdialog的默认行为,您需要自定义它喜欢:

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

它将删除对话框时,你会打电话removeDialog(0)

+0

Thanks.let我清楚,如果我没有在positive.setOnClickListener设置removeDialog(0)...然后将它关闭对话框呢?其实当我按下按钮,正应该对话框无法关闭。 –

+0

我说覆写onCreateDialog(int id)。它会解决你的问题。 –

+0

谢谢维内特舒克拉... –

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(); 
相关问题