2 qq 30603221 qq_30603221 于 2016.09.26 14:28 提问

viewpager中两个tabhost互相冲突 5C

viewpager页面里,2个靠近的页面都使用了tabhost,可以正常运行,但是后初始化的那个界面的tabhost会部署到
先初始化完成的那个页面里。
我是这么完成tabhost的

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view = inflater.inflate(R.layout.fragment_frg5, container, false);

        tabHost5 = (TabHost) view.findViewById(R.id.tabHost1);
        tabHost5.setup();

        tabHost5.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
            @Override
            public void onTabChanged(String tab) {
                System.out.println("current tabid=" + tab);
                FragmentTransaction ft = getFragmentManager().beginTransaction();
                if (TextUtils.equals("3", tab)) {
                    //add/replace fragment first
                    frag5 = new frg5_frg1();
                    System.out.println("load f3");
                } else if (TextUtils.equals("4", tab)) {
                    //add/replace fragment second
                    frag5 = new frg5_frg2();
                    System.out.println("load f4");
                } else if (TextUtils.equals("5", tab)) {
                    //add/replace fragment second
                    frag5 = new frg5_frg3();
                    System.out.println("load f5");
                }

                ft.replace(android.R.id.tabcontent, frag5, "frag5");
                ft.commit();
            }
        });

        tabHost5.addTab(tabHost5.newTabSpec("3").setIndicator("环境设置")
                .setContent(new DummyTabFactory(getActivity())));
        tabHost5.addTab(tabHost5.newTabSpec("4").setIndicator("安全设置")//setIndicator 设置标签样式
                .setContent(new DummyTabFactory(getActivity())));//setContent 点击标签后触发
        tabHost5.addTab(tabHost5.newTabSpec("5").setIndicator("密码设置")//setIndicator 设置标签样式
                .setContent(new DummyTabFactory(getActivity()))); //setContent 点击标签后触发

        return view;
    }

    private static class DummyTabFactory implements TabHost.TabContentFactory {
        private Context context;
        private DummyTabFactory(Context ctx) {
            this.context = ctx;
        }
        @Override
        public View createTabContent(String tag1) {//创建宽高均为0的view
            View v = new ImageView(context);
            v.setMinimumWidth(0);
            v.setMinimumHeight(0);
            return v;
        }
    }
}

布局页面

 <?xml version="1.0" encoding="utf-8"?>
    <TabHost  xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/tabHost1">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
            </TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1">


            </FrameLayout>
        </LinearLayout>
    </TabHost>

2个tabhost都是这么完成的,但是因为必须用@android:id/tabcontent。所以2个界面的布局就变得重复了,
后加载的那个tabhost会把前面的盖掉。我想过把viewpager的预加载关掉,那样就不会提前初始化下一个tabhost,但学的太少,去掉预加载老是出问题。

现在为了实现功能,把一个tabhost改成了取消滑动的viewpager,虽然看着像,但终究不是tabhost。
tabhost的实现方法问题吗?

1个回答

feng1790291543
feng1790291543   Ds   Rxr 2016.09.26 15:47

设置联动监听应该不会出现

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
TabHost和ViewPager
TabHost和ViewPager的联用
使用TabHost和ViewPager实现页面切换
在android的开发过程中经常会遇到页面切换的问题,其中一个解决办法是使用fragment加Handler来实现,不过有些情况下这种方法并不是最好的选择。比如,你需要滑动切换页面的时候。这时使用TabHost和ViewPager来实现会更加方便。文章参考API文档中Creating Swipe Views with Tabs(文章路径Training->Implementing Effect
FragmentTabHost切换Fragment时避免重复加载UI(ViewPager切换Fragment时也适用)
使用FragmentTabHost时,Fragment之间切换时每次都会调用onCreateView方法,导致每次Fragment的布局都重绘,无法保持Fragment原有状态。         解决办法:在Fragment onCreateView方法中缓存View(此方法也适用 ViewPager切换Fragment的场景,切换时仍可以保存Fragment的状态) [j
ViewPager和Tabhost(tabhostfragment)结合
ViewPager可以使视图滑动起来,Tabhost让布局更加简单, 其实写完这个界面的时候,才感觉自己无非就是蛋疼,Tabhost本身就是就是一个横向的线性布局。 但是作为写教程而言还是要从头开始,一步一步来。 先是主布局界面 xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://sc
Android FragmentTabHost嵌套(ViewPager+Fragment)问题
昨天就开始在困惑一个问题,那就是FragmentTabHost嵌套(ViewPager+Fragment)后,通FragmentTabHost切换到含有(ViewPager+Fragment)的fragment的时候,第一次会正常的显示界面,而切换带其他的tab fragment在切回来,viewpage里面的fragment就没有显示界面了如图:  图片标记的不是很好,大概的意思就是Fragm
使用FragmentTabHost+TabLayout+ViewPager实现双层嵌套Tab
大多数应用程序都会在底部使用3~5个Tab对应用程序的主要功能进行划分,对于一些信息量非常大的应用程序,还需要在每个Tab下继续划分子Tab对信息进行分类显示. 本文实现采用FragmentTabHost+TabLayout+ViewPager实现双层嵌套Tab,实现原理如下:       第一层Tab:FragmentTabHost + Fragment;       第二层T
Tab菜单栏:FragmentTabHost&ViewPager&Fragment的结合使用
Tab菜单栏:FragmentTabHost&ViewPager&Fragment的结合使用 目录: 1.技术拆分 2.代码示例 3.细节说明
首页-底部Tab导航(菜单栏)的实现:FragmentTabHost+ViewPager+Fragment
前言Android开发中使用底部菜单栏的频次非常高,这篇文章主要讲解的是用FragmentTabHost+ViewPager+Fragment实现首页底部Tab菜单栏
FragmentTabHost嵌套ViewPager,Fragment第二次点击不显示的问题
FragmentTabHost嵌套ViewPager,Fragment第二次点击不显示的主要原因是第二次加载的时候重复调用了onCreateView()这个方法,问题的解决方法就是在onCreateView()方法里面加入以下代码if (view != null) { ViewGroup parent = (ViewGroup) view.getParent();
android项目剖解之ViewPager+Fragment 实现tabhost效果
ViewPager+Fragment 实现导航栏 自己项目中需要用到,自己学习的笔记,分享一下!