Fragment中添加menu
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fragment中添加menu相关的知识,希望对你有一定的参考价值。
参考技术AFragment是Android里面中一个非常灵巧的设计,它可以看做ui模块,由活动托管。熟练的使用它们能优雅的实现很复杂的界面,而且用它们编写UI界面,相对于用一个个Activity所消耗内存少得多,而且切换很流畅,可以参考知乎客户端。
但是,Fragment使用过程中会出现一些小问题,这里讲如何在Fragment中添加menu。我们都知道在活动中添加menu只用编写好menu,在onCreateOptionsMenu中加载,并在onOptionsItemSelected中处理点击事件就可以了,按照这个流程先试下
首先编写menu.xml
这里只添加一个设置的menu item
然后要加载menu需要toolbar或actionbar,这里分两种情况:
然后再调用onCreateOptionsMenu加载到toolbar上
运行一下,你会发现两种情况下menu都没加载出来。原来要在fragment中加载menu还需在其onCreate中加一句 setHasOptionsMenu(true),用于让活动知道有menu要加载
现在menu加载出来了
然后重写onOptionsItemSelected处理点击事件
现在就大功告成了吗,然而运行后会发现无论怎么点击onOptionsItemSelected都没被调用。可以再android training中找到原因
http://developer.android.com/guide/topics/ui/actionbar.html
也就是说在虽然在fragment中重写onOptionsItemSelected,但系统会在activity中先调用onOptionsItemSelected,而活动中默认都消耗了点击事件,fragment中因此无法处理点击。所以要先在托管碎片的活动中讲frament中处理的menu item返回false,让点击事件能穿到fragment的onOptionsItemSelected中
总结下
要在fragment添加menu需要以下步骤:
以上是关于Fragment中添加menu的主要内容,如果未能解决你的问题,请参考以下文章
Fragment中的ViewPager的Fragment添加子Fragment要放在onAttach中添加
Android 怎么将fragment 动态地添加到布局中的任意位置?
FragmentPagerAdapter动态添加fragment和删除fragment