mTabHost.setup出错

kaka4524 2014-05-30 12:02:57
mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

很常规的用法,网上找到很多这样的例子,但是执行setup后出现以下错误:
05-30 11:25:48.230: E/AndroidRuntime(5923): Caused by: java.lang.RuntimeException: Your TabHost must have a FrameLayout whose id attribute is 'android.R.id.tabcontent'
05-30 11:25:48.230: E/AndroidRuntime(5923): at android.widget.TabHost.setup(TabHost.java:163)
05-30 11:25:48.230: E/AndroidRuntime(5923): at android.support.v4.app.FragmentTabHost.setup(FragmentTabHost.java:197)
05-30 11:25:48.230: E/AndroidRuntime(5923): at com.example.testfragmeng1.AllFragmentActivity.onCreate(AllFragmentActivity.java:24)
05-30 11:25:48.230: E/AndroidRuntime(5923): at android.app.Activity.performCreate(Activity.java:5122)
05-30 11:25:48.230: E/AndroidRuntime(5923): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1151)
05-30 11:25:48.230: E/AndroidRuntime(5923): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2322)

我没有v4的源码,跟到tabhost里面执行了setup()无参方法。。。。
请问这个是哪里的问题?
...全文
365 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
s_347719 2015-12-23
  • 打赏
  • 举报
回复
我操。我也遇到了,那是因为我更新了V4包
kaka4524 2014-06-03
  • 打赏
  • 举报
回复
我勒个去。。。。
kaka4524 2014-05-30
  • 打赏
  • 举报
回复

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

        mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
                FragmentStackSupport.CountingFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),
                LoaderCursorSupport.CursorLoaderListFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"),
                LoaderCustomSupport.AppListFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"),
                LoaderThrottleSupport.ThrottledLoaderListFragment.class, null);
上面是google的example,但是 mTabHost.setup调用源码如下

   public void setup(Context context, FragmentManager manager, int containerId) {
        ensureHierarchy(context);  // Ensure views required by super.setup()
        super.setup();
        mContext = context;
        mFragmentManager = manager;
        mContainerId = containerId;
        ensureContent();
        mRealTabContent.setId(containerId);

        // We must have an ID to be able to save/restore our state.  If
        // the owner hasn't set one at this point, we will set it ourself.
        if (getId() == View.NO_ID) {
            setId(android.R.id.tabhost);
        }
    }
super.setup();就会调用到TabHost,一定会去找android.R.id.tabcontent。。。。 请大卡们指点一下怎么使用。。。 我网上搜索都这样用,别人不出问题。。。。想不通有什么地方出纰漏
kaka4524 2014-05-30
  • 打赏
  • 举报
回复
没人回答吗。。。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧