Android 在Fragment中对Menu的操作

来源:互联网 发布:美军战斗力知乎 编辑:程序博客网 时间:2024/06/05 00:52

转载请注明出处,谢谢合作!
http://blog.csdn.net/JeterPong/article/details/52841386

最近,项目有用到Fragment对Menu的操作使用,发现并不能像Activity中那样直接使用。需要在oncreat方法中添加一行代码,才会被调用出来。
为此从网上查了一下资料,整理了一下,以便下次的使用和记忆。

Android4.0之后引入了fragment的概念,它的生命周期函数和activity几乎一样。对菜单的操作也是通过onCreateOptionMenu()实现的。

fragment可以通过实现 onCreateOptionMenu() 提供菜单项给activity的选项菜单。为了使这个方法接收调用,无论如何, 你必须在 onCreate() 期间调用 setHasOptionsMenu() 来指出fragment愿意添加item到选项菜单(否则, fragment将接收不到对 onCreateOptionsMenu()的调用)。

在Activity中是这样使用的:

public boolean onCreateOptionsMenu(Menu menu) {          getMenuInflater().inflate(R.menu.main, menu);          return true;  }

而在Fragment中使用时是这样的:

    @Override    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {        super.onCreateOptionsMenu(menu, inflater);        inflater.inflate(R.menu.fragment_main,menu);    }

多了一个形参:MenuInflater inflater
返回值为空

并且之后要在Fragment中的oncreat方法中调用这一行代码:
setHasOptionsMenu(true);//添加这行代码

    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        view = inflater.inflate(R.layout.fragment_feedback, null);        setHasOptionsMenu(true);//需要添加这行代码        return view;    }

参考资料:http://blog.csdn.net/momo906/article/details/36190099
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0104/777.html

0 0
原创粉丝点击