我刚接触Android,最近在做Tab切换,本来是想用TabHost+Activity,但是发现TabHost用到的LocalActivityManager或ActivityGroup或TabActivity全部被标注为不建议使用,可如果不用这些的话,TabHost在tabHost.setup的时候会报错,然后我试了FragmentTabHost,可这个里面只用放入Fragment,我不想每个界面都是Fragment,我感觉应该是Activity,然后如果需要的话,在Activity里面添加Fragment,所以我就迷糊了,我要怎么用TabHost,求指教~~~~~~~~~~~~~~~~~~~

解决方案 »

  1.   

    http://www.cnblogs.com/TerryBlog/archive/2012/02/17/2355753.html
    Fragment是个好东西啊
      

  2.   

    不要用FragmentTabHost ,那东西比较坑。
    使用一个FragmentActivity,里面的页面为Fragment,Tab按钮为RadioButton
    用一个hashmap 将RadioButton与具体页面关联起来
    动态的replace Framgment就行了
      

  3.   

    没有太看明白,这样的功能一般都用tabhost去实现么,不过也可以用 FragmentActivity mTabHostMainHome=this.getTabHost();
    TabSpec messageSpec=mTabHostMainHome.newTabSpec(MESSAGE_TAB).setIndicator(MESSAGE_TAB).setContent(new Intent(this,MessageActivity.class));TabSpec shippingCommunitySpec=mTabHostMainHome.newTabSpec(SHIPPINGCOMMUNITY_TAB).setIndicator(SHIPPINGCOMMUNITY_TAB).setContent(new Intent(this,ShippingCommunityActivity.class));
    mTabHostMainHome.addTab(messageSpec);至于ShippingCommunityActivity 这个,继承FragmentActivity就OK了
      

  4.   

    我用的是tabhost+FragmentActivity,FragmentActivity里又有Fragment
      

  5.   


    = =!还是老问题,TabHost  setup方法中的参数哪里获取,跳转是用startActivity(Intent intent),setup里面需要参数,否则回报错
      

  6.   

    跳转不用startActivity的,而是changeFragment的,具体叫什么方法我忘了,代码在公司
      

  7.   

    我查了下,好像没有这个方法,听名字像是转换Fragment,但是我TabHost里面是FragmentActivity,可以不用startActivity跳转?
      

  8.   

    我有试过ViewPager,貌似这个刚开始的时候就要初始化所有包含的界面,不过我查了下,好像有可以延迟初始化的方法,我遇到的问题是怎么把Activity初始化成View放入ViewPager(PS: 刚接触Android,不知道问的这个问题是不是很蠢)
      

  9.   


    public class MyActivity extends FragmentActivity{
    public static FragmentManager fm;
    public static Fragment currentFragment;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.fragment);
            fm = getSupportFragmentManager();
            // 只当容器,主要內容已Fragment呈现
            initFragment(new ProcessFragment());
        }
        // 切换Fragment
        public static void changeFragment(Fragment f){
            changeFragment(f, false);
            currentFragment=f;
        }
        // 初始化Fragment(FragmentActivity中呼叫)
        public static void initFragment(Fragment f){
            changeFragment(f, true);
            currentFragment=f;
        }
        private static void changeFragment(Fragment f, boolean init){
            FragmentTransaction ft = fm.beginTransaction();
            ft.replace(R.id.simple_fragment, f);
            if(!init)
                ft.addToBackStack(null);
            ft.commit();
        }
    }
    这个是FragmentActivity,然后每一个Fragment要跳转到别的Fragment的时候:MyActivity.changeFragment(new AFragment());
      

  10.   


    跟TabHost没关系吗?你这样的做法是在一个FragmentActivity内切换Fragment,总体是一个Activity,内容是每个Fragment,是吗