1.fragment的添加与显示
FragmentManager通过开启事务来隐藏,显示,添加,或者替换fragment到指定的framelayout容器中去,具体代码如下图:这里使用隐藏fragment的目的是为了防止该fragment切换到另外一个fragment的时候,用户输入的数据丢失,所以只是隐藏掉了fragment,并没有销毁,所以不会调用其onpause,onstop,ondestoryview等方法,等到需要显示的时候可以直接调用其show方法来使其显示,你会发现用户刚刚输入的内容都还存在。addToBackStack是指将fragment添加到fragment的返回栈中去,从而使每次退出一个fragment的时候就会导致出栈,返回栈空了之后才会回到该activity上去,进而才会退出该activity.简单来说,如果设置添加到返回栈,点击返回键就会返回上一个fragment.
transaction.replace其实是add和remove两个操作的结合。
2.fragment横竖屏切换时候的问题
无论是fragment还是activity在进行横竖屏切换的时候,生命周期中的暂停停止销毁方法都会执行,在切换的时候再次重新创建,所以,如果用户在当前页面有数据,我们都需要调用onSaveInstanceState()方法将数据进行存储,然后在oncreate方法传入的bundle中进行获取,activity还可以通过onRestoreInstanceState()方法传入的bundle进行获取已达到保存用户当前页面信息的功能。
3.Fragmeny与Toolbar和MenuItem集成
Fragment可以添加自己的MenuItem到Activity的Toolbar或者可选菜单中。
a、在Fragment的onCreate中调用setHasOptionsMenu(true);
b、然后在Fragment子类中实现onCreateOptionsMenu
c、如果希望在Fragment中处理MenuItem的点击,也可以实现onOptionsItemSelected;当然了Activity也可以直接处理该MenuItem的点击事件。
即调用a方法之后,fragment的onCreateOptionsMenu中设置的菜单就可以被集成到toolbar中去,然后可以直接在frgament的onOptionsItemSelected方法中进行处理,也可以在activity的onOptionsItemSelected方法中获取其id进行处理即可。但是注意
网友评论