1.在activity_main.xml中设置为:
<android.support.v4.view.ViewPager
android:id="@+id/vp_content_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
|
那么,就全部都要匹配,都要使用android-support-v4.jar包中的相关控件等
2.在Fragment的实现类中
package com.example.actionbarwithfragmenttest;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class FragmentB extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//设置布局文件
//将xml文件转换为View
View v = inflater.inflate(R.layout.fragment_3, container,false);
return v;
}
}
|
3.在MainActivity.java中,要使Activity继承于FragmentActivity
package com.example.actionbarwithfragmenttest;
import java.util.ArrayList;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
public class MainActivity extends FragmentActivity implements TabListener {
ActionBar actionBar;
ViewPager vpContent;
ArrayList<Fragment> fragments=new ArrayList<Fragment>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//隐藏icon/title
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
// 创建tabR对象
Tab tabR = actionBar.newTab();
tabR.setText("R");
// 设置监听器
tabR.setTabListener(this);
// 添加Tab
actionBar.addTab(tabR);
// 创建tabG对象
Tab tabG = actionBar.newTab();
tabG.setText("G");
tabG.setTabListener(this);
actionBar.addTab(tabG);
// 创建tabB对象
Tab tabB = actionBar.newTab();
tabB.setText("B");
tabB.setTabListener(this);
actionBar.addTab(tabB);
fragments.add(new FragmentR());
fragments.add(new FragmentG());
fragments.add(new FragmentB());
vpContent=(ViewPager) findViewById(R.id.vp_content_main);
vpContent.setAdapter(new MyAdapter(getSupportFragmentManager()));
//getSupportFragmentManager()是android-support-v4.jar中的
vpContent.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
actionBar.setSelectedNavigationItem(arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
@Override
public void onPageScrollStateChanged(int arg0) {}
});
}
//创建FragmentPageAdapter
class MyAdapter extends FragmentPagerAdapter{
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
return fragments.get(arg0);
}
@Override
public int getCount() {
return fragments.size();
}
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
int position = tab.getPosition();
if(vpContent==null){
return;
}
vpContent.setCurrentItem(position);
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {}
}
|
效果: