频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
Android viewpager + fragment实现fragment之间的切换
2017-03-24 09:15:58         来源:qq_35792497的博客  
收藏   我要投稿

Android viewpager + fragment实现fragment之间的切换,别的不说直接上源码

package com.zach.fragmntdemo;

import java.util.ArrayList;
import java.util.List;

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.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.CheckedTextView;
import android.widget.Toast;

public class MainActivity extends FragmentActivity implements OnClickListener{

	private ViewPager viewpager;
	private CheckedTextView home_ctv,info_ctv,circle_ctv,my_ctv;
	private List fglist = new ArrayList();

	private int currentTab = -1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}

	private void initView() {
		// TODO Auto-generated method stub
		viewpager = (ViewPager) findViewById(R.id.viewpager);
		home_ctv = (CheckedTextView) findViewById(R.id.home_ctv);
		home_ctv.setOnClickListener(this);
		info_ctv = (CheckedTextView) findViewById(R.id.info_ctv);
		info_ctv.setOnClickListener(this);
		circle_ctv = (CheckedTextView) findViewById(R.id.circle_ctv);
		circle_ctv.setOnClickListener(this);
		my_ctv = (CheckedTextView) findViewById(R.id.my_ctv);
		my_ctv.setOnClickListener(this);

		//		LayoutInflater inflater = getLayoutInflater();
		//		home_view = inflater.inflate(R.layout.fragment_home, null);
		//		info_view = inflater.inflate(R.layout.fragment_info, null);
		//		circle_view = inflater.inflate(R.layout.fragment_circle, null);
		//		my_view = inflater.inflate(R.layout.fragment_my, null);

		HomeFragment hfg = new HomeFragment();
		CircleFragment cfg = new CircleFragment();
		InfoFragment ifg = new InfoFragment();
		MyFragment mfg = new MyFragment();

		fglist.add(hfg);
		fglist.add(ifg);
		fglist.add(cfg);
		fglist.add(mfg);

		//		PagerAdapter pagerAdapter = new PagerAdapter() {  
		//            
		//            @Override  
		//            public boolean isViewFromObject(View arg0, Object arg1) {  
		//                // TODO Auto-generated method stub  
		//                return arg0 == arg1;  
		//            }  
		//              
		//            @Override  
		//            public int getCount() {  
		//                // TODO Auto-generated method stub  
		//                return viewlist.size();  
		//            }  
		//              
		//            @Override  
		//            public void destroyItem(ViewGroup container, int position,  
		//                    Object object) {  
		//                // TODO Auto-generated method stub  
		//                container.removeView(viewlist.get(position));  
		//            }  
		//              
		//            @Override  
		//            public Object instantiateItem(ViewGroup container, int position) {  
		//                // TODO Auto-generated method stub  
		//                container.addView(viewlist.get(position));  
		//                  
		//                  
		//                return viewlist.get(position);  
		//            }  
		//        };  
		//		viewpager.setAdapter(pagerAdapter);


		viewpager.setAdapter(new homeFragmentAdapter(getSupportFragmentManager()));
	}


	/**
	 * @author Administrator
	 *
	 */
	class homeFragmentAdapter extends FragmentStatePagerAdapter{

		public homeFragmentAdapter(FragmentManager fm) {
			super(fm);
			// TODO Auto-generated constructor stub
		}
		@Override
		public Fragment getItem(int arg0) {
			// TODO Auto-generated method stub
			return fglist.get(arg0);
		}
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return fglist.size();
		}

		@Override
		public void finishUpdate(ViewGroup container) {
			// TODO Auto-generated method stub
			super.finishUpdate(container);


			if(viewpager.getCurrentItem() == currentTab){
				return;
			}

			Toast.makeText(getApplicationContext(), viewpager.getCurrentItem() + "", Toast.LENGTH_SHORT).show();
			currentTab = viewpager.getCurrentItem();
		}
	}


	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.home_ctv:
			swichTab(0);
			break;
		case R.id.info_ctv:
			swichTab(1);
			break;
		case R.id.circle_ctv:
			swichTab(2);
			break;
		case R.id.my_ctv:
			swichTab(3);
			break;

		default:
			break;
		}
	}

	/**
	 * Tab之间的切换
	 * @param postion
	 */
	private void swichTab(int postion) {
		// TODO Auto-generated method stub
		viewpager.setCurrentItem(postion);
	}

}


如果把注释都去掉的话就是viewpager之间的布局切换操作

下面上布局文件
pre class="brush:java;"><linearlayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.zach.fragmntdemo.MainActivity">
 
     
 
    <linearlayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal">
 
        <checkedtextview android:id="@+id/home_ctv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1.0" android:checked="true" android:gravity="center" android:text="1">
 
        <checkedtextview android:id="@+id/info_ctv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1.0" android:checked="false" android:gravity="center" android:text="2">
 
        <checkedtextview android:id="@+id/circle_ctv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1.0" android:checked="false" android:gravity="center" android:text="3">
 
        <checkedtextview android:id="@+id/my_ctv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1.0" android:checked="false" android:gravity="center" android:text="4">
    </checkedtextview></checkedtextview></checkedtextview></checkedtextview></linearlayout>
 
</android.support.v4.view.viewpager></linearlayout></pre><pre class="brush:java;"></pre><pre class="brush:java;">其他的几个小的页面自己随便新建一个好了</pre><pre class="brush:java;"></pre><br>
<pre class="brush:java;"></pre>
<pre class="brush:java;"></pre>

其他的几个小的页面自己随便新建一个好了
点击复制链接 与好友分享!回本站首页
上一篇:Android自定义控件——歌词显示
下一篇:android 四大组件之一 Service 的应用
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站