Android学习之--底部菜单FragmentTabHost使用

记录点滴生活:

     一:常见错误:

            (一)  mytablehost.Fragmentpage1 cannot be cast to android.support.v4.app.Fragment

                  错误原因:extends Fragment 

                  正确方法:extends android.support.v4.app.Fragment


   二:上代码:

               步骤一:先写主布局,一个用于显示界面,一个v4.app.FragmentTabHost用于底部栏

             (2.1)activity_ main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff"
    android:orientation="vertical">

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

</FrameLayout>
<android.support.v4.app.FragmentTabHost
    android:id="@+id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/holo_orange_light">

    <LinearLayout
        android:id="@+id/tablecontent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       >

    </LinearLayout>
</android.support.v4.app.FragmentTabHost>



</LinearLayout>

          

          (2.2) 写3个界面用于显示显示界面的XML布局(fragment_one, two,three),很简单就写一个TextView,         

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="18sp"
        android:text="First Fragment"/>

</LinearLayout>

          

(2.3)写一个名为:tabcontent.XML其作用是写底部菜单栏的布局样式,ImageView,TextView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
  android:orientation="vertical"
    >
<ImageView
    android:id="@+id/table_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/table_text"
        android:textColor="#ff0000"/>
</LinearLayout>
   (2.4)  建立Fragmentpage1,2,3 (注意继承是 android.support.v4.app.Fragment)                    

public class Fragmentpage1 extends android.support.v4.app.Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

      View V=inflater.inflate(R.layout.fragment_one,null);

        return  V;
    }
}

   

(2.5)MainActivity extens FragmentActivity 

public class MainActivity extends FragmentActivity {

    String name[]={ "首页","第二页","第三页"};
    int imgButton[]={android.R.drawable.btn_radio,
            android.R.drawable.btn_star,
            android.R.drawable.ic_delete};
    Class fragmentArray[]={Fragmentpage1.class,Fragmentpage2.class,Fragmetnpage3.class};
    FragmentTabHost fragmentTabHost;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      fragmentTabHost= (FragmentTabHost) findViewById(R.id.tabhost);
        fragmentTabHost.setup(this,getSupportFragmentManager(),R.id.maincontent);
        /* 3.0因为3.0以下版本是没有fragment的api所以必须借助V4包里面的getSupportFragmentManager()方法来间接获取
        FragmentManager()对象。3.0版本之后,有了Fragment的api,
        就可以直接使用getFragmentManager()这个方法来获取了*/
        for (int i=0;i<name.length;i++){
            TabHost.TabSpec tabSpec=fragmentTabHost.newTabSpec(i+"").setIndicator(getView(i));
            /*newTabSpec()里参数为一个Tag标签,所以我这里使用i+""加以区别
            * 将指示器填充到tabSpec 这个对象中*/
            fragmentTabHost.addTab(tabSpec,fragmentArray[i],null);
            /* .addTab 是将菜单栏按钮和显示界面关联起来*/


        }

    }

     private  View getView(int i){
         View view=View.inflate(MainActivity.this,R.layout.tabcontent,null);
         
         ImageView imageView= (ImageView) view.findViewById(R.id.table_image);
         TextView textView= (TextView) view.findViewById(R.id.table_text);
         imageView.setImageResource(imgButton[i]);
         textView.setText(name[i]);
         return view;
     }

}
 以上都是个人理解 ,界面丑的一笔,没有任何点击效果,丑的那叫一个惨绝人寰,不敢放图片!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值