在Viewpager中的Fragment使用ContextMenu问题

PythonWeb开发框架—Django之工程创建和models的定义和增删改查 文章介绍了Django工程的创建、models的定义和增删改查 阅读详情

ContextMenu用法


上下文菜单ContextMenu由系统支持,常用于通过长按控件弹出列表形菜单,实现步骤如下

  • onCreateContextMenu方法 创建菜单
  • registerForContextMenu方法,为需响应的控件注册
  • onContextItemSelected方法,响应点击


在Viewpager中的Fragment使用ContextMenu发生的问题


在我的具体项目环境中,Viewpager中存在3个Fragment(0/1/2),并继承自一个父类BaseFragment。在父类中完成了上下文菜单的绝大部分工作,即上文提到的创建/注册/响应点击;子类中仅重写onCreateContextMenu方法,用于区分修改菜单显示;那么问题来了:

  • 当点击Fragment0的上下文菜单的某项时,Fragment1和2的点击响应事件也同时执行了;
  • 当分别点击Fragment1和2的上下文菜单时,也仍然按照Fragment0-1-2的顺序将响应事件依次执行一遍;


解决方法


问题的症结在于Viewpager改变了其中的Fragment显式的生命周期和关联关系,在前文《关于Activity中的Viewpager中的Fragment的生命周期》我也提到过这一问题,并尝试采用setUserVisibleHint方法解决了问题;在本文中同样,可以采用getUserVisibleHint()方法判断当前Fragment是否真实可见,如可见则响应,不可见则截止并向下分发,直到有可见页面响应为止。

  • 在3个Fragment子类中,均需重写

       
     public boolean onContextItemSelected(MenuItem item) {
         if (getUserVisibleHint()) {
             return super.onContextItemSelected(item);
         }
         return false;
     }
  • return true 代表截断

  • return false 代表继续分发

另一种解决方案

  • StackOverFlow提供了另一个解决方案,为每一个Fragment分别创建菜单,在创建时设置Group组号,并在分别响应点击时判断组号来完成截止和分发;
  • 本文方法针对我的具体代码而言改动较小,更为简便清晰,故未采用上述方式。
添加USB wifi驱动到RK3568 在日常开发中我们经常需要用到wifi功能,一般来说soc厂家都会事先做好了几个厂家的wifi驱动在内核源码目录下,我们只需要按原理图配置对应的设备树即可。常用的wifi的接口有:USBSDIOPCIE下面来介绍这这种接口是如何使用wifi芯片。提示:以下是本篇文章正文内容,下面案例可供参考本小节介绍了一个配置一个USBwifi驱动的整个流程,并没有介绍到SDIO,下小节基于AP6256介绍如何使用。 阅读详情

相关推荐

KEIL MDK 生成bin文件实战:C51与ARM双平台配置指南

本文详细介绍了在KEIL MDK开发环境中,为C51和ARM双平台自动生成BIN文件的实战方法。针对C51平台,通过srec_cat.exe工具编写批处理脚本并集成到KEIL;针对ARM平台,则利用fromelf.exe工具直接配置。文章还提供了通用脚本方案和路径、变量、版本兼容性等常见问题的避坑指南,帮助开发者高效完成嵌入式程序部署。

weixin_29188997的博客 347

android 修改 TabLayout+ViewPager的页面显示顺序

有这样一种需求,为了满足不同用户的视觉需求,便在B界面提供了界面拖拽排序的功能,即A界面中的布局根据B中拖拽的结果产生,当B中item顺序改变,A中tablayout的title顺序做出相应顺序修改,如下图: 点击按钮跳转到B界面,如图所示: A中最初的顺序数据保存在SharedPreferences中,B中顺序修改后,更改存储的数据, 具体代码如下: MainActivity: private Fragment1 fragment1; private Fragment2 fragment2; pr

qq_39994562的博客 1024

保姆级教程:在寒武纪MLU370上从零部署YOLOv5(附安全帽数据集)

本文提供在寒武纪MLU370上从零部署YOLOv5的保姆级教程,涵盖环境配置、模型迁移、安全帽数据集处理、训练优化及推理部署全流程。通过实战案例展示MLU370在目标检测任务中的高效性能,适合开发者快速掌握国产AI加速卡的应用技巧。

weixin_27419879的博客 192

关于ViewPager和Fragment的二三事

这两天看到的一些关于ViewPager+Fragment使用的一些文章,都很有价值,于是集中进行一次转载。里面有部分是原创内容有部分是转载内容。 友盟页面统计 - 关于Viewpager中的Fragment的生命周期  原文地址 Activity和Fragment各自理论上的生命周期     Activity的生命周期是较为经典也最清晰的,在此不表;     Fragment从出

piglite的专栏 1763

从零构建RK3568视频处理管线:C++ V4L2捕获与RKMPP硬编解码实战

本文详细介绍了在RK3568平台上,使用C++语言从零构建高性能视频处理管线的实战过程。核心内容包括通过V4L2接口高效捕获摄像头视频流,并利用RKMPP硬件编码器实现零拷贝的H.264/H.265硬编码。文章深入讲解了设备初始化、DMA缓冲区管理、编码器参数配置以及主循环协同工作等关键步骤,旨在帮助开发者构建低延迟、高效率的嵌入式视频应用。

weixin_29193359的博客 87

Anthropic三件套重构AI工作流:Claude Code、Design与桌面宠物实战指南

AI协作已从单点工具迈入系统化工作流阶段。理解AI作为‘协作者’而非‘执行器’的本质,是提升工程效率的关键前提;其核心在于对任务调度、自适应推理与人机交互边界的重新定义。Claude Code的xhigh effort机制体现了分层推理的工程智慧,Claude Design以HTML为原生设计语言实现设计-代码一体化,而桌面宠物则将抽象的token消耗具象为可感知的硬件反馈。这些能力共同指向一个趋势:AI工作流正从prompt调参走向契约式委派、从界面割裂走向跨模态统一。本文结合Opus 4.7最新实践,解

a4512138的专栏 486

在fragment中添加上下文菜单

在fragment中添加上下文菜单,和在mainactivity中有一些不同,两者都需要在menu目录下创建一个菜单xml(如main.xml)文件,在mainactivity下我们在onCreateContextMenu()方法中使用的是getMenuInflater().inflate(R.menu.main, menu);然后把上下文菜单设置到我们想要的控件上registerForConte

u013270383的博客 2216

PCL 八叉树的使用

八叉树(Octree)是一种空间划分的数据结构,广泛应用于三维点云的处理和分析。八叉树通过将空间递归地划分为八个子区域,可以有效地组织和索引三维点数据,提升点云的查询、降采样和配准等操作的效率。

纵马踏花向自由 1659

Fragment上下文菜单示例

本文中所讲的技术项目源码下载地址:http://download.youkuaiyun.com/detail/far_sight/7930799

王光荣的专栏 2785

java实现长短期记忆人工神经网络LSTM(附完整源码)

java实现长短期记忆人工神经网络LSTM(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1695

CloudCompare 二次开发(6)——插件中拖拽添加Qt窗口(区域生长算法为例)

手动拖拽的方式搭建Qt对话框界面的制作流程,以PCL中的点云区域生长算法为例进行制作。

点云侠的博客 2153

android fragment contextmenu,android fragment中使用ContextMenu

在fragment中使用ContextMenu和在Activity中使用的步骤是一样的。1.在layout--》menu文件夹下的.xml文件中定义菜单选项。xmlns:tools="http://schemas.android.com/tools"tools:context="com.example.viewpager_fragment.MainActivity" >android:id=...

weixin_39554775的博客 318

Qt入门教程【高级控件篇】QModelIndex索引

QModelIndex索引

小鱼酱的博客 4466

ViewPager+Fragment+ContextMenu的选择问题

使用ViewPager内放Fragment,Fragment中有一个ListView,在对ListView的item进行注册上下文菜单时,发现无论怎样长按,选择的都是第一个Fragment。        stackoverflow上的回复是在onContextItemSelected()中加上一个 getUserVisibleHint()方法进行判断就好了。不知道其中的原委,不过赶时间先把坑挖在

Futureer的专栏 1037

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ViewPager+Fragment中上下文菜单点击会顺次响应问题

再用ViewPager+Fragment实现上下文菜单点击事件,比如我有三个fragment-   fragment 0/1/2,当点击fragment0里面的上下文菜单时,fragment 1/2的上下文菜单会依次响应,导致程序异常退出。 解决方法:使用getUserVisibleHint()方法来判断fragement对用户是否可见。 @Override publ

泥巴城 的博客 428

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

viewpager+fragment+listview registerForContextMenu

1.需求描述 viewpager  +  fragment   ,每个fragment 中的布局都是listview ,listview 支持点击(OnItemClick)和长按(register ForContextMenu),  点击进入详情页面;每次长按弹出 MeunItem 之后,点击MeunItem  弹出提示框提示用户是否删除,用户点击确定即可删除该行。        2

Wilshion的博客 1193

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android移除fragment,android – 如何从FragmentPagerAdapter中删除片段...

我知道这里有一些关于这方面的话题,但我找不到一个可以为我的案子工作的解决方案.我有一个使用自定义FragmentActivity和FragmentPagerAdapter的工作滑动库,它包含一个片段列表.在FragmentActivity中是一个ImageView“删除”.如果单击,则调用函数deleteMedia(),然后删除当前的片段,并显示以下片段.在我的例子中我该如何做到这一点?Fragm...

weixin_32830601的博客 478

安卓作业----慕课移动应用开发作业15之模仿实现微信界面效果(一)

此篇综合运用自定义ActionBar、OptionsMenu、SubMenu、Fragment、ViewPager 以及RecyclerView等实现微信页面效果。 同时这也是中国大学慕课移动终端应用开发的网课作业15,我会持续更新我的作业 说明 说明1 这个说小不小的作品花了我两天的时间,时间花费的颇多。如果我的作品对您有所帮助的话,您的关注或是赞,都是对我的莫大支持。如果引用我的作品,请注明出...

baidu_41860619的博客 2313

安卓作业----慕课移动应用开发作业15之模仿实现微信界面效果(三)

此篇综合运用自定义ActionBar、OptionsMenu、SubMenu、Fragment、ViewPager 以及RecyclerView等实现微信页面效果。 同时这也是中国大学慕课移动终端应用开发的网课作业15,我会持续更新我的作业 说明 说明1 这个说小不小的作品花了我两天的时间,时间花费的颇多。如果我的作品对您有所帮助的话,您的关注或是赞,都是对我的莫大支持。如果引用我的作品,请注明出...

baidu_41860619的博客 3050

安卓作业----慕课移动应用开发作业15之模仿实现微信界面效果(二)

此篇综合运用自定义ActionBar、OptionsMenu、SubMenu、Fragment、ViewPager 以及RecyclerView等实现微信页面效果。 同时这也是中国大学慕课移动终端应用开发的网课作业15,我会持续更新我的作业 说明 说明1 这个说小不小的作品花了我两天的时间,时间花费的颇多。如果我的作品对您有所帮助的话,您的关注或是赞,都是对我的莫大支持。如果引用我的作品,请注明出...

baidu_41860619的博客 2622

Android编程_常用组件

常用组件 菜单Menu 目的增加更多功能,不占用主屏空间 Android 3.0 前后的Menu 是不一样的 3.0 以前菜单按钮后底部出现6个菜单项,超出部分以更多显示 3.0 以后的Menu 在屏幕顶部的操作栏,顶部右侧溢出菜单,可以快捷访问目标操作 菜单分类 选项菜单 OptionMenu 上下文菜单 ContextMenu 弹出菜单 PopupMenu menu 显示问题 onCreateOptionsMenus() 方法返回true onOptionsItemSelecred() 方法返回tr

qq_42766309的博客 314

Android Api Demos登顶之路(三十六)Fragment-->ContextMenu

这个demo演示了在fragment中使用上下文落单ContextMenu的方法 * 上下文菜单与Options Menu最大的不同在于,Options Menu的拥有者是Activity, 而上下文菜单的拥有者是Activity中的View。 * 生成上下文菜单却是通过Activity中的onCreateContextMenu(ContextMenu menu, * View v,

fishtosky的博客 556

android那些事--上下文菜单

Menu的创建,选择监听 /** * 此方法用于初始化上下文菜单 并只会在第一次初始化菜单时调用 * 其中参数menu就是即将要显示的Menu的实例 * 返回true 则显示该菜单 返回false不显示 * * @param menu * @return */ @Override public boole

lucky9322的专栏 362

android fragment中使用ContextMenu

在fragment中使用ContextMenu和在Activity中使用的步骤是一样的。 1.在layout--》menu文件夹下的.xml文件中定义菜单选项。 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

u010585448的专栏 2722

Fragment 中 ListView绑定ContextMenu

package com.example.administrator.imbobo.controller.fragment;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;i...

weixin_30617561的博客 462

通过Fragment实现简单的上下文菜单

用到fragment的菜单功能,昨天测试了下,怎么都不出菜单,仔细看了下文档,发现一个问题,fragment的菜单在使用前,一定要在onCreate()中调用setHasOptionsMenu()这个方法。这个文档中已经明确标注了,大家可以去看下。 http://www.eoeandroid.com/forum.php?mod=viewthread&tid=69175 【转】Fra

学习记录 2658
上一篇: 友盟页面统计 - 关于Viewpager中的Fragment的生命周期
下一篇: 强制Actionbar与Tab显示为一行或两行
tongcpp
博客等级 码龄15年 32粉丝 23原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值