首页 > 代码库 > Android ActivityGroup实现的TabHost 保留activity原来状态

Android ActivityGroup实现的TabHost 保留activity原来状态

    在用ActivityGroup实现的TabHost时,由tab1切换到tab2再切换回来时,会重新加载tab1里的activity 

   

public class MainUIActivity extends  ActivityGroup{
 private Context context=this;
 private TabHost mTabhost;
 private String TAB1="首页";
 private String TAB2="收藏";
 private String TAB3="3";
 private String TAB4="4";
 private String TAB5="更多";
 
//定义数组来存放按钮图片
	private int mImageViewArray[] = {R.drawable.tab_home_btn,R.drawable.tab_message_btn,R.drawable.tab_selfinfo_btn,
									 R.drawable.tab_square_btn,R.drawable.tab_more_btn};
	
	//Tab选项卡的文字
	private String mTextviewArray[] = {TAB1, TAB2, TAB3, TAB4, TAB5};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tab_main);
		mTabhost=(TabHost) findViewById(R.id.tabhost1);
		mTabhost.setup();
		mTabhost.setup(this.getLocalActivityManager());
		Intent i1=new Intent(this,MainActivity.class);
		Intent i_collect=new Intent(this,CollectActivity.class);
//		Intent i1=new Intent(this,MainActivity.class);
//		Intent i1=new Intent(this,MainActivity.class);
//		Intent i1=new Intent(this,MainActivity.class);
		mTabhost.addTab(mTabhost.newTabSpec(TAB1).setIndicator(getTabItemView(0)).setContent(R.id.zhuye).setContent(i1));
		//注意,这里是newTabSpec(TAB2),每个tab选项卡要写的不一样,这样才能保存原来的状态
		mTabhost.addTab(mTabhost.newTabSpec(TAB2).setIndicator(getTabItemView(1)).setContent(R.id.zhuye2).setContent(i_collect));
		mTabhost.addTab(mTabhost.newTabSpec(TAB1).setIndicator(getTabItemView(2)).setContent(R.id.zhuye3).setContent(i1));
		mTabhost.addTab(mTabhost.newTabSpec(TAB1).setIndicator(getTabItemView(3)).setContent(R.id.zhuye4).setContent(i1));
		mTabhost.addTab(mTabhost.newTabSpec(TAB1).setIndicator(getTabItemView(4)).setContent(R.id.zhuye5).setContent(i1));
		
	}
	/**
	 * 给Tab按钮设置图标和文字
	 */
	private View getTabItemView(int index){
		View view = LayoutInflater.from(context).inflate(R.layout.tab_item, null);
	
		ImageView imageView = (ImageView) view.findViewById(R.id.tab_icon);
		imageView.setImageResource(mImageViewArray[index]);
		
		TextView textView = (TextView) view.findViewById(R.id.tab_name);		
		textView.setText(mTextviewArray[index]);
	
		return view;
	}
	
	  public static Intent createIntent(Context context) {
	        Intent i = new Intent(context, MainActivity.class);
	        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
	        return i;
	    }
}
解决方法在上面的代码中已经写了,就是为每个tab选项卡设置不同的tag