ViewPager切换过来后,组件没有重新加载

在public void onCheckedChanged(RadioGroup radioGroup, int CheckedId) 这个方法中还需要重新生成页面就行了

package com.example.servlet_mobile_2;

import java.lang.reflect.Method;
import java.util.ArrayList;

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;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;


import com.example.servlet_mobile_2.ChatsFragment;
import com.example.servlet_mobile_2.ContactsFragment;
import com.example.servlet_mobile_2.DiscoverFragment;
import com.example.servlet_mobile_2.MeFragment;


public class MainActivity extends FragmentActivity implements OnCheckedChangeListener
{
	public   static   String ipString="192.168.0.148";
	//ViewPager控件
	private ViewPager main_viewPager ;
	//RadioGroup控件
	private RadioGroup main_tab_RadioGroup ;
	//RadioButton控件
	private RadioButton radio_chats , radio_contacts , radio_discover , radio_me ;
	//类型为Fragment的动态数组
	private ArrayList<Fragment> fragmentList ;
	
	private View view1, view2, view3, view4;
	
	private  Button  btn2_1;
	
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//界面初始函数,用来获取定义的各控件对应的ID
		InitView();
		//ViewPager初始化函数
		InitViewPager();
	
	
	}onCreateonCreateonCreateonCreateonCreateonCreate
	
	public void InitView()
	{
		main_tab_RadioGroup = (RadioGroup) findViewById(R.id.main_tab_RadioGroup) ;
		
		radio_chats = (RadioButton) findViewById(R.id.radio_chats) ;
		radio_contacts = (RadioButton) findViewById(R.id.radio_contacts) ;
		radio_discover = (RadioButton) findViewById(R.id.radio_discover) ;
		radio_me = (RadioButton) findViewById(R.id.radio_me) ;
		
		main_tab_RadioGroup.setOnCheckedChangeListener(this);
	}
	
	public void InitViewPager()
	{
		main_viewPager = (ViewPager) findViewById(R.id.main_ViewPager);
		
		fragmentList = new ArrayList<Fragment>() ;
		
		Fragment chatsFragment = new ChatsFragment() ;
		Fragment contactsFragment = new ContactsFragment();
		Fragment discoverFragment = new DiscoverFragment();
		Fragment meFragment = new MeFragment();
		
		LayoutInflater inflater = getLayoutInflater();
		view1 = inflater.inflate(R.layout.chats_fragment, null);
		
		//将各Fragment加入数组中
		fragmentList.add(chatsFragment);
		fragmentList.add(contactsFragment);
		fragmentList.add(discoverFragment);
		fragmentList.add(meFragment);
		
		//设置ViewPager的设配器
		MyAdapter  myAdapter = new MyAdapter(getSupportFragmentManager() , fragmentList);
		****************************
		myAdapter.notifyDataSetChanged();
		main_viewPager.setAdapter(myAdapter);
		//当前为第一个页面
		main_viewPager.setCurrentItem(0);
		//ViewPager的页面改变监听器
		main_viewPager.setOnPageChangeListener(new MyListner());
	}
	
	public class MyAdapter extends FragmentPagerAdapter
	{
		ArrayList<Fragment> list ;
		public MyAdapter(FragmentManager fm , ArrayList<Fragment> list)
		{
			super(fm);
			this.list = list ;
		}
		@Override
		public Fragment getItem(int arg0) {
			return list.get(arg0);
		}
		@Override
		public int getCount() {
			return list.size();
		}
	}

	/页面变化监听器
	public class MyListner implements OnPageChangeListener
	{
		@Override
		public void onPageScrollStateChanged(int arg0) {
			
		}
		@Override
		public void onPageScrolled(int arg0, float arg1, int arg2) {
			
		}
		@Override
		public void onPageSelected(int arg0) {
			//获取当前页面用于改变对应RadioButton的状态
			int current = main_viewPager.getCurrentItem() ;
			switch(current)
			{
			case 0:
				///RadioGroup.check(int id)
				//id the unique id of the radio button to select in this group
				main_tab_RadioGroup.check(R.id.radio_chats);
				break;
			case 1:
				main_tab_RadioGroup.check(R.id.radio_contacts);
				break;
			case 2:
				main_tab_RadioGroup.check(R.id.radio_discover);
				break;
			case 3:
				main_tab_RadioGroup.check(R.id.radio_me);
				break;
			}
		}
	}
	
	@Override
	public void onCheckedChanged(RadioGroup radioGroup, int CheckedId) 
	{
		//获取当前被选中的RadioButton的ID,用于改变ViewPager的当前页
		int current=0;
		switch(CheckedId)
		{
		case R.id.radio_chats:
			current = 0 ;
			break ;
		case R.id.radio_contacts:
			current = 1 ;
			break;
		case R.id.radio_discover:
			current = 2 ;
			break;
		case R.id.radio_me:
			current = 3 ;
			break ;
		}
		if(main_viewPager.getCurrentItem() != current)
		{
			InitView();这个方法中还需要重新生成页面就行了  ,很重要!!!!!!!!!!!!!!!!
			//ViewPager初始化函数
			InitViewPager();///这个方法中还需要重新生成页面就行了,  很重要!!!!!!!!!!!!!!!!
			main_viewPager.setCurrentItem(current);
		}
	}
	

	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		getMenuInflater().inflate(R.menu.main, menu) ;
		return true;
	}
	
	@Override
	public boolean onMenuOpened(int featureId , Menu menu)
	{
		if(featureId == Window.FEATURE_ACTION_BAR  && menu != null)
		{
			if(menu.getClass().getSimpleName().equals("MenuBuilder"))
			{
				try {
					Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
					m.setAccessible(true);
					m.invoke(menu, true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		return super.onMenuOpened(featureId, menu) ;
	}


	public static String getIpString() {
		return ipString;
	}

	public static void setIpString(String ipString) {
		MainActivity.ipString = ipString;
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十六画生的博客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值