标签:des android style http io color os ar 使用
1.使用drawerLayout + fragment+ viewpager组合
fragment第二次进入不刷新问题
遇到的问题:第一次加载Fragment的时候,界面能够正常初始化,而且获取的网络数据也能正常显示,
但是点击其他item项再回来的时候发现数据不加载,然后将viewpager多滑动几次才会执行onCreateView方法。数据也就能够正常显示。
问题分析:第二次进入时viewpager中的fragment的onCreateView没有调用,再向上一层分析,发现onCreateView的调用,是由于被类PagerAdapter
中的getItem的调用。所以,为什么会出现第二次进入的时候viewpager中的fragment的onCreateView方法都不执行也就是getItem方法没有调用呢?原因就在于FragmentPagerAdapter
的设计原理,关于FragmentStatePagerAdapter和FragmentPagerAdapter的详细区别,
【FragmentPagerAdapter】
FragmentPagerAdapter 继承自 PagerAdapter。相比通用的 PagerAdapter,该类更专注于每一页均为 Fragment 的情况。如文档所述,该类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;如果需要处理有很多页,并且数据动态性较大、占用内存较多的情况,应该使用FragmentStatePagerAdapter。FragmentPagerAdapter 重载实现了几个必须的函数,因此来自 PagerAdapter 的函数,我们只需要实现 getCount(),即可。且,由于 FragmentPagerAdapter.instantiateItem() 的实现中,调用了一个新增的虚函数 getItem(),因此,我们还至少需要实现一个 getItem()。因此,总体上来说,相对于继承自 PagerAdapter,更方便一些。
【FragmentStatePagerAdapter】
FragmentStatePagerAdapter 和前面的 FragmentPagerAdapter 一样,是继承子 PagerAdapter。但是,和 FragmentPagerAdapter 不一样的是,正如其类名中的 ‘State‘ 所表明的含义一样,该 PagerAdapter 的实现将只保留当前页面,当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面(就像 ListView 的实现一样)。这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。
很简单就把FragmentPagerAdapter替换成FragmentStatePagerAdapter就可以了。
2.使用自定义的ListView adapter调用mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);发现不生效。
简单的解决问题方法,如果想使用系统的,可以直接在rootView设置android:background="?android:attr/activatedBackgroundIndicator"就可以,
如果想使用自定义的一个高亮选中,那么可以使用selector,设置android:state_activated=["true" | "false"]这个属性就可以了
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize=["true" | "false"]
android:dither=["true" | "false"]
android:variablePadding=["true" | "false"] >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:state_pressed=["true" | "false"]
android:state_focused=["true" | "false"]
android:state_hovered=["true" | "false"]
android:state_selected=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_activated=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>
标签:des android style http io color os ar 使用
原文地址:http://www.cnblogs.com/9420sunshine/p/4066253.html