Android 解决嵌套Fragment无法接收onCreateOptionsMenu事件的问题
前言
嵌套的二级Fragment无法接收onCreateOptionsMenu事件的问题,设置了setHasOptionsMenu也不管用。
正文
补充说明:
如果通过缓存Fragment手动调用二级Fragment,可能会出现莫名其妙的问题,比如更多Menu不显示。
解决办法:
在一级Fragment中添加Menu,可以在一级onOptionsItemSelected中手动调用二级的此方法来处理相关事件。
示例代码:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
switch (getSelectedPosition()) {
case 1:
inflater.inflate(R.menu.menu1, menu);
break;
case 2:
inflater.inflate(R.menu.menu2, menu);
break;
case 0:
default:
inflater.inflate(R.menu.menu3, menu);
break;
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Fragment fragment = getFragmentByPosition(getSelectedPosition());
if (fragment != null)
fragment.onOptionsItemSelected(item);
return super.onOptionsItemSelected(item);
}
代码说明:
示例代码是一级Fragment,getFragmentByPosition返回的是二级Fragment。
以上就是Android 解决 Fragment无法接收onCreateOptionsMenu事件的问题,希望能帮助Android开发的朋友解决类似问题。
相关推荐
-
Android onCreateOptionsMenu的使用方法总结
Android onCreateOptionsMenu的使用方法总结 任何一款软件都少不了对"菜单"的使用.在Android下,每一个activity都捆绑了一个Menu,要想定义和使用菜单,都必须在Activity下进行操作,复写onCreateOptionsMenu 和 onOptionsItemSelected这两个方法.举例如下: @Override public boolean onCreateOptionsMenu(Menu menu) { //调用基类的方法,以便调出系统
-
Android中oncreate中获得控件高度或宽度的实现方法
Android中oncreate中获得控件高度或宽度的实现方法 onCreate函数只是提供了数据初始化的机会,此时还没有正式绘制图形.在图形尚未渲染的情况下,getWidth()或getHeight()得到的值为0.如果需要自适应屏幕,需要一进入界面就得到父控件大小,然后需要在onCreate中动态设置子控件大小. 方法1: 利用ViewTreeObserver类的addOnPreDrawListener接口. ViewTreeObserver vto = hscrollview.getVie
-
Android在OnCreate中获取控件的宽度和高度的实现代码
在Android中,有时需要对控件进行测量,得到的控件宽度和高度可以用来做一些计算.在需要自适应屏幕的情况下,这种计算就显得特别重要.另一方便,由于需求的原因,希望一进入界面后,就能得到控件的宽度和高度. 可惜的是,根据我的验证,利用网上转载的那些方法在OnCreate函数中获取到的仍然是0(希望搞技术的能自己验证过再转载),例如Measure方法之后调用getMeasuredWidth的值还是0. 原因是因为当OnCreate函数发生时,只是提供了数据初始化的机会,此时还没有正式绘制图形.而绘
-
Android onCreate( )方法详细介绍
onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Google Android Developers官网上的解释: onCreate(Bundle) is where you initialize your activity. Most importantly, here you will usually call setContentView(int) with a layout resource d
-
Android使用onCreateOptionsMenu()创建菜单Menu的方法详解
本文实例讲述了Android使用onCreateOptionsMenu()创建菜单Menu的方法.分享给大家供大家参考,具体如下: Android一共有三种形式的菜单: 1.选项菜单(optinosMenu) 2.上下文菜单(ContextMenu) 3.子菜单(subMenu) 其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键 后会在对应的Activity底部显示出来. 1.Activity菜单机制 (与dialog类似) Activity有一套机制来实现对菜
-
Android编程实现两个Activity相互切换而不使用onCreate()的方法
本文实例讲述了Android编程实现两个Activity相互切换而不使用onCreate()的方法.分享给大家供大家参考,具体如下: 这里要实现的目的是: 有3个Activity: A,B,C,从A中可以进入B,B中可以进入C,并且B和C之间可能需要多次相互切换,因此不能使用普通的startActivity-finish方式,因为重新创建Activity比较耗时.当这个Activity内容比较多时,重复创建很大的影响了流畅性.(即实现类似于QQ上 选择照片页面-选择相册页面,这两个页面可能多次相
-
Android OnCreate()中获取控件高度与宽度两种方法详解
Android OnCreate()中获取控件高度与宽度 试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与getHeight()方法返回是0,具体原因 看一下Activity的生命周期 就会明白. 上代码: 方法一: int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.Me
-
Android 解决嵌套Fragment无法接收onCreateOptionsMenu事件的问题
前言 嵌套的二级Fragment无法接收onCreateOptionsMenu事件的问题,设置了setHasOptionsMenu也不管用. 正文 补充说明: 如果通过缓存Fragment手动调用二级Fragment,可能会出现莫名其妙的问题,比如更多Menu不显示. 解决办法: 在一级Fragment中添加Menu,可以在一级onOptionsItemSelected中手动调用二级的此方法来处理相关事件. 示例代码: @Override public void onCreateOptionsM
-
Android 中 Fragment 嵌套 Fragment使用存在的bug附完美解决方案
自从Android3.0引入了Fragment之后,使用Activity去嵌套一些Fragment的做法也变得更加流行,这确实是Fragment带来的一些优点,比如说:Fragment可以使你能够将activity分离成多个可重用的组件,每个都有它自己的生命周期和UI,更重要的是Fragment解决了Activity间的切换不流畅,实现了一种轻量及的切换,但是在官方提供的android.support.v4包中,Fragment还是或多或少的存在一些BUG,今天就与大家分享一下这些BUG和解决方
-
Android 多层嵌套后的 Fragment 懒加载实现示例
多层嵌套后的 Fragment 懒加载 印象中从 Feed 流应用流行开始,Fragment 懒加载变成了一个大家都需要关注的开发知识,关于 Fragment 的懒加载,网上有很多例子,GitHub 上也有很多例子,就连我自己在一年前也写过相关的文章.但是之前的应用可能最多的是一层 Activity + ViewPager 的 UI 层次,但是随着页面越来越复杂,越来越多的应用首页一个页面外层是一个 ViewPager 内部可能还嵌套着一层 ViewPager,这是之前的懒加载就可能不那么好用了
-
Android解决viewpager嵌套滑动冲突并保留侧滑菜单功能
重写子pagerview的dispatchTouchEvent方法,在返回前添加一句getParent().requestDisallowInterceptTouchEvent(true)中断掉事件的传递,类如下 public class SupperViewPager extends ViewPager { private int screenWidth;//屏幕宽度 public SupperViewPager(Context context) { super(context); } pub
-
Android解决dialog弹出时无法捕捉Activity的back事件的方法
本文实例讲述了Android解决dialog弹出时无法捕捉Activity的back事件的方法.分享给大家供大家参考.具体分析如下: 在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件: 1)重写onKeyDown或者onKeyUp方法 2)重写onBackPressed方法 3)重写dispatchKeyEvent方法 这三种办法有什么区别在这里不进行阐述,有兴趣的朋友可以查阅相关资料. 然而在有dialog弹出时,
-
Android中fragment嵌套fragment问题解决方法
都说fragment好用,duang~~,又遇到问题了,记录一下,分享给遇到这个问题的同学! 1.fragment嵌套fragment时出现getActivity()为null activity A嵌套fragment B,B嵌套fragment C,C跳转到activity D,当activity D被finish掉之后,C中容易爆出getActivity为空.如果你的activity被回收了,那你需要在bundle中保存一下fragment信息,我的解决方法:fragment实例化之后会到a
-
Android 解决ScrollView嵌套CridView显示问题
Android 解决ScrollView嵌套CridView显示问题 由于GridView是可滑动的控件,嵌套在ScrollView下时需要重写onMeasure方法. public class MyGridView extends GridView{ public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } public MyGridView(Context context) { supe
-
Android 嵌套Fragment的使用实例代码
前言 之前的文章有介绍ActivityGroup,不少人问嵌套使用的问题,同样的需求在Fragment中也存在,幸好在最新的Android support 包已经支持这一特性!这里就跳过Fragment的介绍,需要注意的是TabActivity已经被标记为弃用(deprecated). 正文 一.准备 关于最新的Android兼容包的介绍,参见官网.可以在android sdk目录下extras/android/support/v13/android-support-v13.jar找到最新版,注
-
Android ScrollView嵌套ExpandableListView显示不正常的问题的解决办法
Android ScrollView嵌套ExpandableListView显示不正常的问题的解决办法 前言: 关于ScrollView嵌套ExpandableListView导致ExpandableListView显示不正常的问题解决方法有很多,在这里介绍一种小编亲自测试通过的方法. 重写ExpandableListView: 实例代码: package com.jph.view; import android.content.Context; import android.util.Attr
-
Android开发实现Fragment监听返回键事件功能的方法
本文实例讲述了Android开发实现Fragment监听返回键事件功能的方法.分享给大家供大家参考,具体如下: 前面的文章Android开发教程之Fragment定义.创建与使用方法详细讲述了Fragment的基本概念与用法.这里再来分析一下Fragment监听返回键事件的具体应用. 背景 项目要求用户注册成功后进入修改个人资料的页面,且不允许返回到上一个页面,资料修改完成后结束当前页面,进入APP主页. 由于是使用多个Fragment完成注册流程,就需要Fragment监听用户点击手机上的返回
随机推荐
- python解析中国天气网的天气数据
- 浅述节点的创建及常见功能的实现
- 详解.Net Core + Angular2 环境搭建
- windows server 2008 R2 命令行的方式如何创建用户和设置密码
- java实现socket客户端连接服务端
- java使用listIterator逆序arraylist示例分享
- java Person,Student,GoodStudent 三个类的继承、构造函数的执行
- ASP.NET页面传递值的方式介绍
- python 打印出所有的对象/模块的属性(实例代码)
- PHP递归实现层级树状展开
- Android Support Annotations资料整理
- Node.js中使用mongoskin操作mongoDB实例
- php获取当前url地址的方法小结
- jQuery.cookie.js使用方法及相关参数解释
- 纯css下拉菜单 无需js
- jQuery开发者都需要知道的5个小技巧
- cnblogs csdn 代码运行框实现代码
- 远程升级Linux系统
- 绝招:隐藏管理员账号 三分钟搞定
- C#启动进程的几种常用方法
