2011-05-24 31 views
1
//called when hardware button "Menu" clicked 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 

,然後這個機器人表演對話不起作用

@Override 
    public boolean onMenuItemSelected(int featureId, MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.menu_options: 
       startActivity(new Intent(this, EditPreferences.class)); 
       break; 
     case R.id.menu_about: 
      Dialog dialog = new Dialog(getApplicationContext()); 
       dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);//NO TITLE :) 
       dialog.setContentView(R.layout.menu_about); 
       dialog.setCancelable(true); 
       dialog.show(); 
      break; 

     default: 
      break; 
     } 

//return true; 
//return false; 
     return super.onMenuItemSelected(featureId, item); 
    } 

使用調試我看到我進入開關的情況下R.id.menu_about,但dialog.show()什麼都不做

對話框就不會顯示,我嘗試使用非標準AlertDialog也沒有運氣或者

+0

你得到一個錯誤?如果是這樣請張貼。 – AedonEtLIRA 2011-05-24 16:24:54

+0

沒有錯誤,只是消失的菜單欄 – max4ever 2011-05-24 16:25:53

回答

8

嘗試改變:

Dialog dialog = new Dialog(getApplicationContext()); 

Dialog dialog = new Dialog(this); 
+1

Omg,我剛剛看到。我無法相信我錯過了它。 @Max,是對話框(一般視圖)不能使用應用程序上下文創建。 – AedonEtLIRA 2011-05-24 16:39:41

+1

謝謝,我一直認爲getApplicationContext()和這是一樣的東西,這兩者之間有什麼不同? :) – max4ever 2011-05-25 07:53:50

+1

它用於保持全局應用程序:http://developer.android.com/reference/android/app/Application.html – pawelzieba 2011-05-25 14:12:02