以前有學習過一些優秀的文章,但是顯示的fragment都是一點點內容,在給fragment填充內容的時候有時候是會報錯的,需要做一些操作,稍後將會提及。
本篇效果圖如下:
描述:
1、本篇重點分析圖中紅線框框內的內容
2、在使用ActionBar的時候經常會出現getActionbar 空指針錯誤,首先應在AndroidManifest.xml 文件中設置 android:minSdkVersion爲11或11以上版本,其次可能需要修改主題(默認是不用修改的)爲:
android:theme="@android:style/Theme.Holo.Light"或android:theme="@android:style/Theme.Light"等
3、可能會出現Fragment不兼容的問題出現,new Fragment 的時候統一導入包就OK,如:android.support.v4.app.Fragment,或者android.app.Fragment;
實現:
1、在main.xml中添加一個Viewpager組件
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</android.support.v4.view.ViewPager>
2、添加ActionBar信息
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(actionBar.newTab().setText(R.string.dialogue).setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.find).setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.contact).setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.me).setTabListener(this));
3、設置ViewPager信息
viewPager = (ViewPager)findViewById(R.id.viewpager);
viewPager.setAdapter(pagerAdapter);
viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
actionBar.setSelectedNavigationItem(position);
}
});
4、初始化Fragment,在這我導入的包是android.support.v4.app.Fragment,所以在定義以下四個單獨的Fragment類的時候也需要導入包android.support.v4.app.Fragment,就不會出現兼容性問題了
private void initView() {
frags = new ArrayList<Fragment>();
v1 = new DialogueFragment();
v2 = new FindFragment();
v3 = new ContactFragment();
v4 = new MeFragment();
frags.add(v1);
frags.add(v2);
frags.add(v3);
frags.add(v4);
}
4.1 定義DialogueFragment,要讓Fragment中的內容顯示出來,需要重寫如下構造方法,然後就可以用正常的方式獲取視圖,填充內容等等:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
5、創建FragmentPagerAdapter適配器,提供Fragment
FragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()){
@Override
public Fragment getItem(int position) {
return frags.get(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return frags.size();
}
};
搞定,詳細代碼整理完後後續會上傳!!!