• 用Fragment来代替过期的Tabhost和ActivityGroup


    首先布局xml中加入一个RelativeLayout来作为Fragment的容器,相当于Tabhost中的tabcontent;加入RadioGroup来作为选项卡,相当于Tabhost中的TabWidget。具体如下:

    
    
        
    
        
    
            
    
            
    
            
        
        
    
        
        
    
    



    其次,在当前Activity中加入默认Fragment,并且通过RadioGroup的监听来进行切换Fragment。具体Activity代码如下:

    package com.kenneth.blogtabfragment;
    
    import android.app.Activity;
    import android.app.Fragment;
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.Menu;
    import android.widget.RadioButton;
    import android.widget.RadioGroup;
    import android.widget.RadioGroup.OnCheckedChangeListener;
    
    /**
     * @author Kenneth 2014-2-11 上午10:26:06
     */
    public class MainActivity extends Activity implements OnCheckedChangeListener {
    	public static final String TAG = MainActivity.class.getSimpleName();
    	private Context mContext = this;
    	private FragmentManager fm;
    	private RadioGroup radioGroup1;
    	private RadioButton radio0;
    	private RadioButton radio1;
    	private RadioButton radio2;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		initView();
    		initData();
    		initListener();
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    
    	private void initView() {
    		radioGroup1 = (RadioGroup) findViewById(R.id.radioGroup1);
    		radio0 = (RadioButton) findViewById(R.id.radio0);
    		radio1 = (RadioButton) findViewById(R.id.radio1);
    		radio2 = (RadioButton) findViewById(R.id.radio2);
    	}
    
    	private void initData() {
    		fm = getFragmentManager();// 获取fragment管理工具类
    		replace(new FirstFragment());//默认选第一个
    	}
    
    	private void initListener() {
    		radioGroup1.setOnCheckedChangeListener(this);
    	}
    
    	@Override
    	public void onCheckedChanged(RadioGroup group, int checkedId) {
    		switch (checkedId) {
    		case R.id.radio0:
    			replace(new FirstFragment());
    			break;
    		case R.id.radio1:
    			replace(new SecondFragment());
    
    			break;
    		case R.id.radio2:
    			replace(new ThirdFragment());
    
    			break;
    
    		default:
    			break;
    		}
    	}
    
    	private void replace(Fragment fragment) {//替换当前容器中的Fragment
    		FragmentTransaction beginTransaction = fm.beginTransaction();
    		beginTransaction.replace(R.id.content, fragment);
    		beginTransaction.commit();
    	}
    }
    

    以上,就是用Fragment来实现Tabhost效果的主要代码。如果是api11以下,请把getFragmentManager替换为getSupportFragmentManager,其他Fragment相关的请引v4支持包中的。

    用多了你就会发现Fragment要比Tabhost,ActivityGroup好用太多了。

  • 相关阅读:
    现货黄金基本知识:黄金策略五大心法
    Java笔记--注解
    J2EE项目部署与发布(Windows版本)
    Stream入门
    redis笔记
    Ansible 2.6 Pthon API
    图形库篇 | EasyX | 图像处理
    【软件测试】03 -- 软件测试概述
    【考研】数据结构考点——归并排序
    CISA 彻底改变了恶意软件信息共享:网络安全的突破
  • 原文地址:https://blog.csdn.net/weixin_67271870/article/details/125564648