本来打算是按照郭神的《第一行代码》的Fragment部分照着敲敲,但是我寻思着,我是大好青年呐,怎么能这么不动脑子地生搬硬套?遇到问题了怎么举一反三?于是乎我就开始了自己的尝试
刚开始我的想法是这样:
竖屏的时候就只是一个简单的单列列表,切换到横屏的时候就显示左侧是单列列表,右侧就是每一个item里面的详细内容。
但是我还是有点懒,就做一下郭神第一行代码的进阶版的demo把
但是这样要攻克的难点就多了起来,具体的几个知识点下面罗列一下:
- 我想要更多的尝试和搞清楚FragmentManager里面的详细内容,不能止步于使用简单的replace
- 判断横竖屏状态来设置布局的问题
- 横竖屏切换后导致Fragment重新加载的问题
- 点击Button后右侧Fragment切换问题
搁置得挺久了,真不好意思,还是得学习。
1. Fragment的管理问题
Fragment的管理类似于将Fragment放进一个栈里面,这样FragmentTraction的使用就比较容易理解。需要注意的就只有replace()这个方法,replace()的时候,tractoin会将栈中的Fragment全部移除,然后再将你需要的Fragment添加进去。推荐的用法是使用add之后使用show()和hide()方法来进行Fragment的展示。
1.1 Fragment的UI重复问题
刚开始我将FragmentTestActivity的xml文件中,fragment的部分就直接使用系统自带的一个View控件-----<fragment 。但是我在这个fragment里面只放置了一个button,但是运行的时候却出现2个button,而且这一个Fragment进行了2次onCreate()和onCreateView()。我目前的解决办法是:不使用<fragment View控件,而是使用了一个FrameLayout控件代替,这样就解决了,虽然具体原因我仍旧不是很清楚,但是先在这里记录一下。
2. 横竖屏切换和判断的问题
我还是使用Configuration和设置android:configChanges属性来进行横竖屏切换后不同布局的展示和横竖屏状态的判断。
具体内容看这里
3. 在一个Activity中的一个Fragment中的一个Button的点击事件的问题
因为这个button并不是在这个Activity所绑定的xmml文件当中,所以我如果在这个Activity当中初始化(即finViewById)并且设置点击事件的话,程序会崩溃,并报错空对象。(据我判断,大致是这么个原因)。所以,这里我的button的点击事件会放在这个Fragment的java代码当中,而且不能放在onCreateView()中(这里只是进行rootView的初始化),而是应该放在onActivityCreate()方法当中。
问题大概就是这些,详细代码请看下面
请参看activity / item_activity / fragment 当中的内容