Android ViewGroup 中 mFocused 字段引起的问题
来源:互联网 发布:office mac 卡死退出 编辑:程序博客网 时间:2024/06/06 06:42
下面是APP主页面的布局,
上方是一个标题,标题下面是主Activity,主Activity中是一个ViewPage,里面的子元素是Fragment,每个Fragment中是一个PullToListView。
主Activity左边还有一个DrawerLayout,默认是隐藏的,可以被拉出来。
讲一下DrawerLayout的一个特点,它可以接收物理按钮的事件,例如返回键。当DrawerLayout显示时,点击返回键,DrawerLayout会隐藏掉。
问题描述:
侧边栏上有个设置按钮,点击后会开启一个新的SettingActivity,SettingActivyt里面有登录的操作,登录成功后,ViewPager的Adapter会重新创建并填充(这是业务要求),
问题是:此时点击返回键,SettingActivity会返回,DrawerLayout并且也会收起。跟了一下代码,SettingActivity和主Activiy都接收到了返回按钮的事件。Activiy将这个事件分配到了DrawerLayout上,所以DrawerLayout也收起了。正常情况下,接收返回按钮的事件是当前Fragment中的PullToRefreshListView。这个就是ViewGroup中的mFocused 对应的对象。因为ViewPager的Adapter重建了,所以焦点变成了DrawerLayout。
解决办法:
把焦点设置到ViewPager上或者ViewPager的父View上,这样即使Adapter重建,焦点也不会改变到DrawerLayout上,就不会接收到返回键事件了。
需要增加
android:focusable="true"android:focusableInTouchMode="true"
<pre name="code" class="html"><requestFocus/>
这三行xml配置
xml代码如下:
<RelativeLayout android:id="@+id/rlSliding" android:focusable="true" android:focusableInTouchMode="true" android:layout_width="match_parent" android:layout_height="match_parent"> <requestFocus/> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/header_layout" /> </RelativeLayout> </RelativeLayout>
备注:上文描述的DrawerLayout的描述不正确,因为DrawerLayout其实是ViewPager的父类,不是和ViewPager同级别的。
只是用DrawerLayout来指定左侧的View比较方便描述。
- Android ViewGroup 中 mFocused 字段引起的问题
- oracle添加字段引起的问题
- 字段类型修改引起的性能问题
- Android中viewgroup中控件置顶问题
- Access中使用字段bool 引起的 字段定义语法错误。
- Android中Device Provisioned引起的问题分析
- Android中Context引起的内存泄露问题
- Android targetSdkVersion引起的问题
- 表索引字段嵌套函数引起的性能问题
- Ibatis缓存select字段名引起的问题
- Android自定义ViewGroup中LayoutParam的应用
- Android ViewGroup中有关测量的方法
- Android 中自定义ViewGroup的初步总结
- Android中view和viewGroup的区别
- Android中自定义ViewGroup
- Android中自定义ViewGroup
- Android中自定义ViewGroup
- Android中自定义ViewGroup
- POJ2369 Permutations【置换群】
- 设计模式之Strategy模式
- Redis Java连接操作
- android:layout_gravity 和 android:gravity 的区别
- 查询避免Unknown column ‘xxx’ in ‘where clause’
- Android ViewGroup 中 mFocused 字段引起的问题
- 多线程之四:NSOperation与NSOperationQueue
- NSIS 检测.NET Framework版本(学习九)
- JavaScript——关于列表权重的笔试题
- github上计算机视觉学习资源
- C#获取当前路径方法整理
- 用smack+openfire做即时通讯
- java异常处理
- POJ2230 Watchcow 欧拉回路路径