2011-05-19 54 views

回答

-1

所有你需要做的就是在聽衆打電話要麼對這些,你可以打開或不關閉菜單問題。

openOptionsMenu(); 

closeOptionsMenu(); 

所以稱之爲onCreate。

public class List extends Activity{ 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout); 

      openOptionsMenu(); 
} 


// Menu Button Stuff 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // TODO Auto-generated method stub 
     super.onCreateOptionsMenu(menu); 
     MenuInflater Menu = getMenuInflater(); 
     Menu.inflate(R.menu.menu_layout, menu); 
     return true; 
    } 

    public boolean onOptionsItemSelected(MenuItem item) { 
     // TODO Auto-generated method stub 
     switch (item.getItemId()) { 
     case R.id.menuBack: 
      finish(); 
      return true;  
     } 
     return false; 
    } 
} 
+1

不知道爲什麼人們給我這個答案的否定。我認爲這是相當不錯的,它的工作原理如此... – MinceMan 2012-06-13 14:10:48

+0

至於downvotes:如果我不小心退出,我可以訪問最近並回來,但是,如果我想退出,我**不能**,因爲你修改後退按鈕的行爲!如果用戶打開選項菜單並按下,'menuOpen'也可能不一致。 – TWiStErRob 2014-10-21 17:38:11

+0

關於「它的工作原理如此...」,搜索:「android.view.WindowManager $ BadTokenException:無法添加窗口 - 標記null無效;您的活動是否正在運行?」,即使您將'openOptionsMenu );''onResume'它可能沒有連接。 – TWiStErRob 2014-10-21 17:39:10

0

我這種一人分飾四周,如果我把它放在onCreate這並不重要,onStartonResumeonPostResume它總是扔(物理銀河S4 @ 4.4.2和Genymotion銀河S2 @ 2.3.7 ):

10-23 12:50:22.389 27702-27702/net.twisterrob.debug D/AndroidRuntime﹕ Shutting down VM 
10-23 12:50:22.389 27702-27702/net.twisterrob.debug W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x418e3da0) 
10-23 12:50:22.389 27702-27702/net.twisterrob.debug E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: net.twisterrob.debug, PID: 27702 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{net.twisterrob.debug/net.twisterrob.android.MyActivity}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) 
      ... 
    Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? 
      at android.view.ViewRootImpl.setView(ViewRootImpl.java:751) 
      at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:278) 
      at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
      at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:746) 
      at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:621) 
      at android.app.Activity.openOptionsMenu(Activity.java:2960) 
      at net.twisterrob.android.MyActivity.onCreate(MyActivity.java:35) 
      at android.app.Activity.performCreate(Activity.java:5426) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) 
      ... 

是:工作的最終解決方案是:活動已經恢復

@Override public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    openOptionsMenu(); 
} 

!isFinishing()它在任何事件處理程序或AsyncTask.onPostExecute中都可以安全使用openOptionsMenu

相關問題