2011-10-08 27 views
0

我有一個活動 - 帶有一些TextFields的表單,用戶填充所有字段後單擊一個提交按鈕。當用戶觸摸提交按鈕時,它應該顯示一個警告對話框,然後當用戶觸摸OK時,其餘的OnClicklistener代碼將執行。目前,我的代碼是這樣的。當用戶點擊我的提交按鈕時,爲什麼會出現這種奇怪的行爲?

偵聽提交/結束按鈕:

private final OnClickListener mFinishListener = new OnClickListener() { 
    public void onClick(View v) { 

    displayAlert(); 

    // Some other things to do here. Lets say showing some other activity 

}; 

警報對話框代碼:

public void displayAlert(){ 
    new AlertDialog.Builder(this).setMessage("Hi , I am Alert Dialog") 
    .setTitle("My Alert") 
    .setCancelable(true) 
    .setNeutralButton(android.R.string.ok, 
     new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton){ 
      finish(); 
     } 
     }) 
    .show(); 
} 

我越來越陌生輸出。當我點擊提交/完成按鈕時,它會向我顯示警報對話框,但在按下「確定」按鈕之前它會消失。爲什麼?

回答

0

您希望在用戶單擊確定後執行的代碼應移至AlertDialog的onClick方法。 finish()之後。否則,它將在對話框顯示時開始執行。

0

如果你想關閉該對話框只

public void onClick(DialogInterface dialog, int whichButton){ 
     dialog.dismiss(); 
    } 

如果你想關閉這兩個對話框,並關閉活動

public void onClick(DialogInterface dialog, int whichButton){ 
     dialog.dismiss(); 
     finish(); 
    } 
1
Hi this is working but don't write finish(); after displayAlert(); function. 

private final OnClickListener mFinishListener = new OnClickListener() { 
@Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     displayAlert(); 
     //your code // don't write finish(); here if you write 
    } 
}; 

public void displayAlert(){ 
    new AlertDialog.Builder(this).setMessage("Hi , I am Alert Dialog") 
    .setTitle("My Alert") 
    .setCancelable(true) 
    .setNeutralButton(android.R.string.ok, 
     new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton){ 
      finish(); 
     } 
     }) 
    .show(); 
} 
相關問題