FragemntTabHost的简单使用

来源:互联网 发布:医疗数据公司 编辑:程序博客网 时间:2024/06/07 04:57

FragementTabHost是Fragment的TabHost效果,FragmentTabHost是TabHost的子类,FragmentTabHost属于v4包的。

使用

布局:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    tools:context="com.example.fragmenttabtest.MainActivity">

<!--Fragemnt的容器 –>

   <LinearLayout

        android:id="@+id/showData"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:layout_weight="1"

        android:orientation="horizontal">

   </LinearLayout>

 

<!--TaHost –>

 

   <android.support.v4.app.FragmentTabHost

        android:id="@+id/myFragemntTabHost"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_weight="0"/>

 

</LinearLayout>

Activity

 

/**

 *继承的是v4包的 FragmentActivity

 */

public classMainActivity extends FragmentActivity {

 FragmentTabHost myFragemntTabHost;//v4包的

 

   @Override

   protectedvoidonCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        myFragemntTabHost=(FragmentTabHost)findViewById(R.id.myFragemntTabHost);

       

        myFragemntTabHost.setup(this,getSupportFragmentManager(), R.id.showData);//首先將tabhostFragmnet的容器绑定//第三個参数是fragment的容器id

       

      

        //其次将Fragmenttab进行绑定//添加显示的fragment

        /**

         * 第一个参数是tab选项的设置,可以单独设置内容,可以设置布局,可以设置内容+drawable

         * 第二个参数是展示的fragemnt

         * 第三个参数是可以为空

         */

        myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("one").setIndicator(getView("电费",R.drawable.life_pay_dian)),

                OneFragment.class,null);

        myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("two").setIndicator(getView("燃气费",R.drawable.life_pay_ranqi)),

                TwoFragment.class,null);

        myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("three").setIndicator(getView("服务费",R.drawable.life_pay_service)),

                ThreeFragemnt.class,null);

        myFragemntTabHost.setOnTabChangedListener(newTabHost.OnTabChangeListener() {

           

            @Override

            public void onTabChanged(StringtabId) {

                if("one".equals(tabId)){

                    Toast.makeText(MainActivity.this,"电费", Toast.LENGTH_LONG).show();

                }else if("two".equals(tabId)){

                    Toast.makeText(MainActivity.this,"燃气费", Toast.LENGTH_LONG).show();

                }else if("three".equals(tabId)){

                    Toast.makeText(MainActivity.this,"服务费", Toast.LENGTH_LONG).show();

                }

            }

        });

   }

   

   privateView getView(String text,int id) {

           //取得布局实例

             View view=View.inflate(MainActivity.this, R.layout.layout_view,null);

            //取得布局对象

            ImageView imageView=(ImageView)view.findViewById(R.id.images);

            TextView textView=(TextView)view.findViewById(R.id.texts);

              //设置图标

            imageView.setImageResource(id);

            //设置标题

           textView.setText(text);

             return view;

          }

}

 

Fragment中嵌套FragmentTabHost

 

 

布局可以使用上面的布局

Fragemnt

有一点需要注意不要在本Fragemnt使用自己否则会报android.view.InflateException,还有继承的Fragment必须是v4包的

public classOneFragment extends android.support.v4.app.Fragment {

 

    private ViewrootView;

    private FragmentTabHostmyFragemntTabHost;//v4包的

 

    @Override

    @Nullable

    public ViewonCreateView(LayoutInflater inflater,

            @Nullable ViewGroup container,@Nullable BundlesavedInstanceState) {

       

        rootView =inflater.inflate(R.layout.activity_main,null);

        myFragemntTabHost= (FragmentTabHost)rootView

                .findViewById(R.id.myFragemntTabHost);

        myFragemntTabHost.setup(getActivity(),getChildFragmentManager(),

                R.id.showData);//第三個参数是fragment的容器id

 

        // 添加显示的fragment

        /**

         * 第一个参数是tab选项的标题设置第二个参数是展示的fragemnt第三个参数是可以为空

         */

//      myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("one")

//              .setIndicator("电费"),

//              OneFragment.class,null);

        myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("two")

                .setIndicator(getView("燃气费",R.drawable.life_pay_ranqi)),

                TwoFragment.class,null);

        myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("three")

                .setIndicator(getView("服务费",R.drawable.life_pay_service)),

                ThreeFragemnt.class,null);

        myFragemntTabHost

                .setOnTabChangedListener(newTabHost.OnTabChangeListener() {

 

                    @Override

                    publicvoid onTabChanged(StringtabId) {

                        if ("one".equals(tabId)) {

                            Toast.makeText(getActivity(),"电费",

                                    Toast.LENGTH_LONG).show();

                        }elseif("two".equals(tabId)){

                            Toast.makeText(getActivity(),"燃气费",

                                    Toast.LENGTH_LONG).show();

                        }elseif("three".equals(tabId)){

                            Toast.makeText(getActivity(),"服务费",

                                    Toast.LENGTH_LONG).show();

                        }

                    }

                });

        returnrootView;

    }

 

    private View getView(Stringtext,intid) {

        // 取得布局实例

        Viewview = LayoutInflater.from(getActivity()).inflate(

                R.layout.layout_fragment_tabhost,null);

        // 取得布局对象

        ImageViewimageView = (ImageView) view.findViewById(R.id.images_view);

        TextViewtextView = (TextView) view.findViewById(R.id.texts_views);

        // 设置图标

        imageView.setImageResource(id);

        // 设置标题

        textView.setText(text);

        return view;

    }

 

    @Override

    public void setUserVisibleHint(boolean isVisibleToUser) {

        super.setUserVisibleHint(isVisibleToUser);

 

    }

 

    @Override

    public void onDestroyView() {

        super.onDestroyView();

    }

}

 

0 0
原创粉丝点击