【Android】FragmentTabHost实现问题记录

来源:互联网 发布:汽车故障诊断软件下载 编辑:程序博客网 时间:2024/05/24 05:20

先有博文:
Android常用控件之FragmentTabHost的使用
文中有提及布局文件

<?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">      <!-- 这个布局决定了标签在上面还是在下面显示 -->      <FrameLayout           android:id="@+id/realtabcontent"          android:layout_width="match_parent"          android:layout_height="0dip"          android:layout_weight="1" />      <android.support.v4.app.FragmentTabHost          android:id="@android:id/tabhost"          android:layout_width="match_parent"          android:layout_height="wrap_content">          <TabWidget               android:id="@android:id/tabs"              android:layout_width="match_parent"              android:layout_height="wrap_content"              android:orientation="horizontal"/>      </android.support.v4.app.FragmentTabHost>  </LinearLayout>  

在java文件中:

mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);          mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); 

然而在实际应用的时候发现,按照博文中所写,AS(studio)会报错:

Your content must have a TabHost whose id attribute is ‘android.R.id.tabcontent’

按照提示,将FrameLayout 子布局移动到Fragment TabHost之内,并将其id更改为

 android:id="@android:id/tabcontent"

将java文件中的引用改为:

 mTabHost.setup(this.getApplication(), getSupportFragmentManager(), android.R.id.tabcontent);

可以通过编译,但是FragmentTabHost的内容和标签效果还未达到我们想要的效果,进过反复实验,发现需要在布局文件中做文章:

<android.support.v4.app.FragmentTabHost        android:id="@android:id/tabhost"        android:layout_width="match_parent"        android:layout_height="wrap_content">        <LinearLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:orientation="vertical">            <FrameLayout                android:id="@android:id/tabcontent"                android:layout_width="fill_parent"                android:layout_height="fill_parent"                android:layout_weight="1" />            <TabWidget                android:id="@android:id/tabs"                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:layout_gravity="bottom" />        </LinearLayout>    </android.support.v4.app.FragmentTabHost>

这样的效果是标签在下,Fragment内容在上。
详细代码示例:(其中的回答)
Android: FargmentTabHost - No tab content FrameLayout found for id xxx

0 0
原创粉丝点击