2014-10-20 77 views
0

我試圖找出如何通過Fragment項目添加到ActionBar菜單。我的應用程序的MainActivity在繼承ActionBarActivity,我希望能夠改變基於其Fragment目前呈現在ActionBar的項目。將項添加動作條在片段

public class LoginFragment : BaseFragment 
{ 
    //... 

    public override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 
     SetHasOptionsMenu(true); 
     // this.Activity.MenuInflater.Inflate(Resource.Menu.something, ???); 
    } 
} 
+0

爲什麼你不應該誇大.xml文件對這項工作。 – 2014-10-20 17:52:42

+0

當然,但我無法弄清楚如何訪問我需要操作的對象。 '我的MainActivity'的'OnCreateOptionsMenu'需要'IMenu'的參數。這是從哪裏來的? – 2014-10-20 17:55:22

+0

您可以創建自定義函數,只是使活動全球refrence,它會被初始化onCreateMenu – 2014-10-20 17:57:57

回答

1

複製從here

1. Remove or comment any onOptionsItemSelected() ,onMenuItemSelected() even onPrepareOptionMenu() and leave in Activity onCreateOptionsMenu() only: 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu){ 
    MenuInflater inflater=getMenuInflater(); 
    inflater.inflate(R.layout.menu, menu); 
    return true; 
    } 
  • 在片段類,在onCreateView(),放:

    setHasOptionsMenu(true); 
    
  • 在片段類添加:

    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu,inflater);  
    } 
    
    @Override 
    public boolean onOptionsItemSelected(MenuItem item){   
         switch(item.getItemId()){ 
         case R.id.action_insert: 
          //doing stuff 
         return true; 
         } 
         return false; 
        } 
    
  • 測試和工作在Android 4.4

    +0

    啊,我試圖找到onCreateOptionsMenu覆蓋。我沒有意識到它對Fragments返回無效。 – 2014-10-20 18:13:07

    +0

    不用擔心。快樂的發展。 – 2014-10-20 18:28:07