2013-03-05 21 views
1

假設我有兩項活動。一個叫MainActivity,另一個叫PopupActivity。 我想在用戶訪問PopupActivity之後在MainActivity中擁有一個上下文菜單。如果初始菜單大小爲零,則無法單擊選項菜單

Main [no menu] --> startActivity()/startActivityForResult() 
    ==> Popup --> back/finish() 
    ==> Main [now has menu]. 

環境細節:

  • minSDK:10(需要向後兼容)
  • targetSDK:17
  • targetDevice:GalaxyTab的2.0

如果在MainActivity具有在開始狀態至少有一個元素,我可以添加/刪除通過onPrepareOptionsMenu獲得所需的菜單項。但是如果MainActiviy裏面有0個菜單元素,android甚至不會在右上角渲染菜單按鈕。

我的問題是:

  • 我怎麼錯過?
  • 如何告訴android,呈現菜單按鈕,因爲我想添加菜單項。

解決方法靈魂提示無法工作(如將Activity分隔爲兩個等),因爲整個問題有點複雜,但它的核心是這個。我不需要菜單項在開始狀態,我需要他們在第二個。

main_menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:id="@+id/menu_add" android:title="@string/add"></item>    
    <item android:id="@+id/menu_remove" android:title="@string/remove" ></item> 
</menu> 

MainActivity.java

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_menu, menu); 
    return true; 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu) 
{ 
    if (initState) 
    { 
     menu.findItem(R.id.menu_add).setVisible(false); 
     menu.findItem(R.id.menu_remove).setVisible(false); 
    } else 
    { 
     menu.findItem(R.id.menu_add).setVisible(true); 
     menu.findItem(R.id.menu_remove).setVisible(true); 
    } 
    return super.onPrepareOptionsMenu(menu); 
} 

回答

1

首先創建兩個菜單。一個用於初始階段,另一個用於訪問PopupActivity之後。

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    MenuInflater inflater = getMenuInflater(); 

    if (initState) 
     inflater.inflate(R.menu.invisible_main_menu, menu); 
    else 
     inflater.inflate(R.menu.visible_main_menu, menu); 

    return true; 
} 
更換你的onCreateOptionsMenu()