Fragment+ViewPager

本文详细介绍了如何在Android应用中整合ViewPager与Fragment,通过实例展示了如何实现页面切换、底部导航栏颜色变化及文本视图背景切换的效果。文章深入探讨了FragmentPagerAdapter的使用,以及如何通过OnCheckedChangeListener和OnPageChangeListener监听器实现页面与UI组件的联动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MainActivity

package com.example.whq_day04_viewpager;

import java.util.ArrayList;

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;

public class MainActivity extends FragmentActivity {

private ViewPager pager;
private RadioGroup radio;
private TextView text1;
private TextView text2;
private TextView text3;
private ArrayList<Fragment> fragments;

@SuppressLint("NewApi") @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    //获取资源id
    pager = (ViewPager) findViewById(R.id.pager);
    radio = (RadioGroup) findViewById(R.id.radio);
    
    text1 = (TextView) findViewById(R.id.text1);
    text2 = (TextView) findViewById(R.id.text2);
    text3 = (TextView) findViewById(R.id.text3);
    
    fragments = new ArrayList<Fragment>();
    fragments.add(new AFragment());
    fragments.add(new BFragment());
    fragments.add(new CFragment());
    
   // viewpager 和 fragment结合,需要使用FragmentPagerAdapter
    // 需要传递Manager
    
    pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
		
		@Override
		public int getCount() {
			return fragments.size();
		}
		
		@Override
		public Fragment getItem(int arg0) {
			return fragments.get(arg0);
		}
	});
    
    radio.setOnCheckedChangeListener(new OnCheckedChangeListener() {
		
		@Override
		public void onCheckedChanged(RadioGroup group, int checkedId) {
			switch (checkedId) {
			case R.id.rd1:
				pager.setCurrentItem(0);
				break;

			case R.id.rd2:
				pager.setCurrentItem(1);
				break;
			case R.id.rd3:
				pager.setCurrentItem(2);
				break;
			}
		}
	});
    
    pager.setOnPageChangeListener(new OnPageChangeListener() {
    	// 滑动后,底部radiobutton改变颜色;
		@Override
		public void onPageSelected(int arg0) {
			switch (arg0) {
			case 0:
				radio.check(R.id.rd1);
				text1.setBackground(getResources().getDrawable(R.color.black));
				text2.setBackground(getResources().getDrawable(R.color.white));
				text3.setBackground(getResources().getDrawable(R.color.white));
				break;

			case 1:
				radio.check(R.id.rd2);
				text1.setBackground(getResources().getDrawable(R.color.white));
				text2.setBackground(getResources().getDrawable(R.color.black));
				text3.setBackground(getResources().getDrawable(R.color.white));
				
				break;
			case 2:
				radio.check(R.id.rd3);
				text1.setBackground(getResources().getDrawable(R.color.white));
				text2.setBackground(getResources().getDrawable(R.color.white));
				text3.setBackground(getResources().getDrawable(R.color.black));
				break;
			}
		}
		
		@Override
		public void onPageScrolled(int arg0, float arg1, int arg2) {
			
		}
		
		@Override
		public void onPageScrollStateChanged(int arg0) {
			
		}
	});
}

}

AFragment

package com.example.whq_day04_viewpager;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class AFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,
		@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
	View view=View.inflate(getActivity(), R.layout.afragment, null);
	return view;
}
}

BFragment

package com.example.whq_day04_viewpager;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class BFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,
		@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
	View view=View.inflate(getActivity(), R.layout.bfragment, null);
	return view;
}
}

CFragment

package com.example.whq_day04_viewpager;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class CFragment extends Fragment{
@Override

public View onCreateView(LayoutInflater inflater,
		@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
	View view=View.inflate(getActivity(), R.layout.cfragment, null);
	return view;
}
}

activity_main.xml

package com.example.whq_day04_viewpager;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class CFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,
		@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
	View view=View.inflate(getActivity(), R.layout.cfragment, null);
	return view;
}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值