2015-08-13 23 views
-2

即時通訊嘗試顯示一個對話框,通知用戶成功登出後。當前僅在處理onOptionsItemSelected方法後才顯示對話框。我想在onOptionsItemSelected期間或之中運行對話框。onOptionsItemSelected dialog.show()沒有顯示

我已經Google搜索並嘗試「this」,「MainActivity.this」,「break」,「return true」。還沒有工作。請指教。

public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    switch (id) { 
     case LOGOUT_ID: { 
      //run some logout process 
      // ........................ 
      //show message 
      AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
      dialog.setMessage("Successfully logged out"); 
      dialog.setPositiveButton("Ok", new 
      DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       redirectToLoginPage();} 
      }); 
      dialog.show(); 
      break; 
     } 
     default: 
      break; 
    } 
    return super.onOptionsItemSelected(item); 
} 
+2

我希望,在做註銷處理,你沒有完成的活動。 – Rohit5k2

+1

你在註銷過程中做了什麼? – Eoin

+0

可能是你應該發佈你的'onCreateOptionsMenu'方法和菜單佈局.. – Emil

回答

1

試試這個

public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    switch (id) { 
    case LOGOUT_ID: 
     doLogOut(); 
     break; 

     default: 
     break; 
    } 

    return super.onOptionsItemSelected(item); 
} 




private void showAlertDialogLogOut() { 

    AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
    dialog.setTitle("Logout"); 
    dialog.setMessage("Successfully loged out"); 
    dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
      redirectToLoginPage() 
     } 
    }); 
    dialog.show(); 

} 

private void doLogOut() { 

    // Do your job and when finish show the dialog 
    showAlertDialogLogOut(); 
}