2011-09-09 49 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(); 
相關問題