viewpager+fragment+listview registerForContextMenu
2016-04-13 11:36
453 查看
1.需求描述
viewpager + fragment ,每个fragment 中的布局都是listview ,listview 支持点击(OnItemClick)和长按(registerForContextMenu), 点击进入详情页面;每次长按弹出MeunItem 之后,点击MeunItem 弹出提示框提示用户是否删除,用户点击确定即可删除该行。
2.问题描述
点击事件没问题的实现。可是长按出现了问题,每次长按弹出 MeunItem 之后,点击MeunItem 弹出提示框提示用户是否删除,此时点击删除出现空指针,发现每次弹框的数量 是当前fragment 的预加载的数量,意思就是,当我点击弹出框的取消按钮或者 点提示框外部区域,这个提示框消失了,后面还有提示框,而且数量正好是当前fragment所决定的。而当前面的一个或者2个提示框消失以后,再点击删除就没有出现空指针,那么问题应该就是和预加载有很大的关系了。
3.解决方法
(1)fragment 是通过newInstance 来new 出来,每次传入当前位置,在当前fragment 记下传入的positionpublic static ServiceOrderFragment newInstance(int position) { ServiceOrderFragment f = new ServiceOrderFragment(); Bundle b = new Bundle(); b.putInt(ARG_POSITION, position); f.setArguments(b); return f; }
(2)获取当前fragment 在viewpager 中的位置,可以在 fragment 的宿主activity中 公开一个方法,获取位置
public int getCurFragmentIndex() { return mViewPager.getCurrentItem(); }(3)在当前fragment
的 onContextItemSelected 方法中,
int curIndex = ((ServiceOrderActivity) getActivity()).getCurFragmentIndex();
获取到当前fragment 所在位置,然后用 newInstance(int position)记录的position
和 curIndex 作对比,相等的时候才去 显示 提示框。
这样,就可以控制弹框到底属于哪个fragment 了。
相关文章推荐
- 解决UINavigationController 自定义LeftBarButtonItem左边空隙问题
- Python基础教程-第三章-使用字符串
- 记一次线上应用连接池满的处理
- 【BLE4.0】Packet sniffer 过滤广播MAC地址
- Redis 字符串处理命令
- iOS 数据库SQLite
- C++中new和delete的用法
- QML中ListView配合ScrollView实现列表功能
- iOS UITextField控件
- ionic react-native和native开发移动app
- 组队列,下载图片,完成后拼接图片
- 创建一个非超级管理员用户,并增加 sudo 权限
- android图片压缩质量参数Bitmap.Config RGB_565 ARGB_8888
- GDB 学习
- opencv之边界扩展copyMakeBorder
- C# 读取数据表没有主键的问题
- Web应用——驾培管理系统之系统—权限分配
- 格式化sd 卡linux 脚本学习
- iOS 模态跳转与返回
- [Android] Material 风格的 Dialog 的使用