2014-10-20 75 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