效果图示例:
==================
1、在res/values下创建arrays.xml布局
代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="array_tabs">
<item>记录</item>
<item>联系人</item>
<item>收藏夹</item>
<item>群组</item>
</string-array>
</resources>
================
2、res/layout下2个布局activity_main.xml和textview.xml
activity_main.xml布局
代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}"
android:id="@+id/layout_container">
</RelativeLayout>
=============
textview.xml 布局
代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center" >
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
==================
3、源文件2个MainActivity.java和PagerFragment.java类
PagerFragment.java类
代码
public class PagerFragment extends Fragment {
private int tabIndex;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
tabIndex = getArguments().getInt("tabIndex");
}
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.textview,container,false);
TextView text = (TextView) view.findViewById(R.id.textView);
switch(tabIndex){
case 0:
text.setText("这是记录页面");
break;
case 1:
text.setText("这是联系人页面");
break;
case 2:
text.setText("这是收藏夹页面");
break;
case 3:
text.setText("这是群组页面");
break;
}
return view;
}
}
=================
MainActivity类
代码
public class MainActivity extends FragmentActivity {
private String[] tabs;
private ActionBar actionBar;
//private List<Fragment> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabs = getResources().getStringArray(R.array.array_tabs);
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//AtionBar模式
for(int i = 0;i<tabs.length;i++){
Tab tab = actionBar.newTab();
tab.setText(tabs[i]);
tab.setTabListener(new MyTabListener());//实现ActionBar中tab的监听
actionBar.addTab(tab);
}
}
//重写tab点击事件监听接口
class MyTabListener implements TabListener{
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
//动态创建Fragment
PagerFragment fragment = new PagerFragment();
Bundle bundle = new Bundle();
bundle.putInt("tabIndex", tab.getPosition());
fragment.setArguments(bundle);
//使用事物来传递数据
FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.layout_container, fragment);
transaction.commit();//提交事物
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
//------------------横屏和竖屏切换时重写的方法---------------------
//如果不重写切换屏时 ActionBar中的tab项从第一项开始
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
//保存换屏前选中ActionBar中的tab项
outState.putInt("tabIndex", actionBar.getSelectedNavigationIndex());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
//重新加载换屏前保存的选中ActionBar中的tab项
actionBar.setSelectedNavigationItem(savedInstanceState.getInt("tabIndex"));
}
}