2011-04-07 82 views
2

我試圖在調用菜單中的某個選項時調用AlertDialog。用戶選擇的內容非常重要,可以作爲參數傳遞給網絡上的XML頁面。Android AlertDialog不會在菜單選項中調用時顯示

我試過以下,但我的AlertDialog從不顯示,它直接進入我的下一個活動。

@Override 
    public boolean onOptionsItemSelected(MenuItem item) {  
     // Handle item selection  
     switch (item.getItemId()) {  
     case R.id.kantoor: 
      //Opent de office activity 
      final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); 
      String arbeiderbed = pref.getString("ArbeiderBediende", ""); 

      if(arbeiderbed.equals("")){ 
       final CharSequence[] beroep = {"Arbeider","Bediende"}; 

       AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       builder.setTitle("Kies uw statuut"); 
       builder.setSingleChoiceItems(beroep, -1, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         // TODO Auto-generated method stub 
         if (beroep[which].equals("Arbeider")){ 
          SharedPreferences.Editor editor = pref.edit(); 
          editor.putString("ArbeiderBediende", "arbeider"); 
          editor.commit(); // Very important 
         } 
         else{ 
          SharedPreferences.Editor editor = pref.edit(); 
          editor.putString("ArbeiderBediende", "bediende"); 
          editor.commit(); // Very important 
         }       
        } 
       }); 
       builder.create().show(); 

      } 
      Intent office = new Intent(MainActivity.this, Settings.class); 
      startActivity(office); 
      return true; 

回答

0

當然是的。警報對話框不是模態的,這意味着show()方法不會阻止進一步代碼的執行。如果您希望活動在對話框關閉時啓動,則應將例如startActivity()的調用放入對話框按鈕的單擊監聽器中。

+0

好的。但用戶可能已經在他的設置中指定了他的選擇。這就是爲什麼我打電話給我的SharedPreferences。如果指定,應用程序需要觸發Activity而不彈出AlertDialog。 – Hannelore 2011-04-07 13:46:40

+0

這樣做沒有複製代碼... – Hannelore 2011-04-07 13:53:11

+0

好吧,然後將調用活動的代碼提取到方法中並調用該方法。你也應該有一個調用這個方法的'else'分支。 – 2011-04-07 13:57:10

相關問題