Android:Fragment+ViewPager实现Tab滑动

public class FragAdapter extends FragmentPagerAdapter {

    private List<Fragment> fragments ;

    public FragAdapter(FragmentManager fm){
super(fm);
} public FragAdapter(FragmentManager fm,List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
} @Override
public Fragment getItem(int position) {
return fragments.get(position);
} @Override
public int getCount() {
return fragments.size();
} /**
* add the fragment to the special position
* @param location the position be added to.
* @param fragment
*/
public void addFragment(int location,Fragment fragment){
this.fragments.add(location, fragment);
this.notifyDataSetChanged();
}
/**
* add the fragment to the default position.the end of the list.
* @param fragment
*/
public void addFragment(Fragment fragment){
this.fragments.add(fragment);
this.notifyDataSetChanged();
}
}

MyFragment.java:

public class MyFragment extends Fragment {

    private static final String TEXT_CHAT = "CHAT";

    /**
* Factory method to generate a new instance of the fragment given a string .
*
* @param char 主页面要传过来的信息
* @return A new instance of MyFragment with chat extras
*/
public static MyFragment newInstance(String chat) {
final MyFragment f = new MyFragment(); final Bundle args = new Bundle();
args.putString(TEXT_CHAT, chat);
f.setArguments(args);
return f;
} @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.myfragment, container, false);
TextView tv = (TextView) view.findViewById(R.id.tv_fragment_text);
String str = getArguments() != null ? getArguments().getString(TEXT_CHAT) : null;
if(str != null){
tv.setText(str);
}else{
tv.setText("获取字段出错了,求指导");
}
return view;
} @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
} }

MainActivity.java:

public class MainActivity extends FragmentActivity implements OnClickListener {

    private ViewPager vp;
private TextView tv_no1;
private TextView tv_no2; private FragAdapter adapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.vp_main);
tv_no1 = (TextView) findViewById(R.id.tv_no1);
tv_no2 = (TextView) findViewById(R.id.tv_no2); tv_no1.setOnClickListener(this);
tv_no2.setOnClickListener(this); initViewPage();
} /**
* 初始化 view page的相关数据
*/
private void initViewPage() { List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(MyFragment.newInstance("我是第一个界面,看到我,看到我"));
fragments.add(MyFragment.newInstance("我是第二个界面,看到我,看到我")); adapter = new FragAdapter(getSupportFragmentManager(), fragments);
vp.setAdapter(adapter);
vp.setCurrentItem();
changeTextColor();
vp.setOnPageChangeListener(new MyVPageChangeListener()); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
} private class MyVPageChangeListener implements OnPageChangeListener { @Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub } @Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub } @Override
public void onPageSelected(int location) {
changeTextColor(location);
} } /**
* 设置下面文本的颜色。
* @param location
*/
private void changeTextColor(int location) {
switch (location) {
case :
tv_no1.setTextColor(Color.RED);
tv_no2.setTextColor(Color.CYAN);
break;
case :
tv_no2.setTextColor(Color.RED);
tv_no1.setTextColor(Color.CYAN);
break;
default:
break;
}
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_no1:
vp.setCurrentItem();
break;
case R.id.tv_no2:
vp.setCurrentItem();
break;
default:
break;
}
} }

FragAdapter.java:

上一篇:深入理解ASP.NET 5的依赖注入


下一篇:gdb调试嵌入式环境搭建