Android 在Fragment中对Menu的操作

转载请注明出处,谢谢合作!
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

你可能感兴趣的:(Android,基础,android,menu,Fragment,android,4.0)