一.添加ActionBar的标签,并实现接口ActionBar.TabListener来监听ActionBar
二.假设有三个标签对应三个ViewPager,每个ViewPager又对应一个Fragment
1).自定义一个类继承Fragment类
2).在onCreateView()方法中获取碎片所对应的layout所对应的的Vie并作为返回值返回
3).final FragmentManager fragmentManager = getFragmentManager(); //获取碎片管理器的对象
final FragmentTransaction transaction = fragmentManager .beginTransaction();
f = fragmentManager.findFragmentByTag(FAVORITE_TAG); //获取以FAVORITE_TAG为标签添加到栈中的碎片
4).如果原先已经以这个标签添加碎片的栈中, 碎片直接被取出
5).如果f == null 证明没有创建过碎片,那么要new一个碎片对象,同时通过transaction.add()把碎片添加到ViewPager
6).实现接口ViewPager.OnPageChangeListener,去监听ViewPager是否切换;如果切换ActionBar标签也跟着切换
---->Tab标签切换时通过switch语句为依据判断要显示那个Fragment,如:
hideFragment(ft, mContextMenuFragment);
hideFragment(ft, mCursorFragment);
showFragment(ft, mArrayFragment);
7).自定一个类去继承PagerAdapter,指引页面数据适配;适配过程中show()方法显示默认显示的Fragment
三.数据来源问题分析:(以一个碎片为例子)
PeopleActivity.java
--->创建ContactTileListFragment()对象时回去执行方法onCreateLoader()该方法返回一个CursorLoader对象,
--->返回时执行:ContactTileLoaderFactory.createStarredLoader()方法、
--->在方法返回值创建一个new CursorLoader(context, Contacts.CONTENT_URI, COLUMNS,Contacts.STARRED + "=?", new String[]{"1"}, Contacts.DISPLAY_NAME + " ASC")对象
--->去到CursorLoader.java下,推测创建对象时会执行loadInBackground()方法
--->执行getContext().getContentResolver().query(mUri, mProjection, mSelection,mSelectionArgs, mSortOrder);返回一个Cursor
--->上面获得Cursor会以参数的形式传入onLoadFinished()方法中
--->mAdapter.setContactCursor(data)方法把获得的Cursor传给适配器,ListView就可以显示联系人的信息了