蜂窝TabHost规格 [英] Honeycomb and TabHost specs

查看:89
本文介绍了蜂窝TabHost规格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个关于蜂窝的向后兼容性问题。我有一个支持2.1或更高版本,似乎大多工作在蜂窝,除非当他们开始TabActivity的应用程序。

I have a question about Honeycomb's backward compatibility. I have an app that supports 2.1 or higher and seems to mostly work on Honeycomb except when they start a TabActivity.

在特定的,当我添加标签到TabHost,我得到下面的异常

In particular, when I add tabs to the TabHost, I get the following exception

android.content.res.Resources $ NotFoundException:资源编号为0x0

android.content.res.Resources$NotFoundException: Resource ID #0x0

在着眼于code抛出此异常,我看到它的标签规范,有一个标签和一个图标。内的code,在LabelAndIconIndicatorStrategy试图膨胀布局文件R.layout.tab_indicator其中没有出现可用。

When looking at the code that throws this exception, I see that it's the tab spec that has a label and an icon. Inside the code, in the LabelAndIconIndicatorStrategy tries to inflate the layout file R.layout.tab_indicator which doesn't appear to be available.

    TabHost.TabSpec spec; // Resusable TabSpec for each tab
    Intent intent; // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(_gameActivity, ScoreGameActivity.class);
    intent.putExtra(GameChangerConstants.STREAM_ID, _stream.pk().toString());

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = _gameTabHost.newTabSpec("score_game").setIndicator("Score", res.getDrawable(R.drawable.icon_field_gloss)).setContent(intent);
    _gameTabHost.addTab(spec);

有没有创造的标签为蜂窝状,我不知道的新方式?我已经浇过的文件,但还没有看到任何指示与我做了什么的问题。

Is there a new way of creating tabs for honeycomb that I don't know about? I've poured over the documentation but haven't seen anything that indicates a problem with what I've done.

我想,以避免使用片段在这一点上,直到我们可以做我们的UI部件更加融为一体prehensive重组,我想更好地了解这个问题。

I'd like to avoid having to use fragments at this point until we can do a more comprehensive restructuring of our UI widgets and I'd like to better understand this issue.

推荐答案

我相信我已经找到了解决办法,而是因为人们都好奇,这里是我得到的时候我遇到了这个问题的堆栈跟踪:

I believe I've found a solution, but because people are curious, here is the stacktrace I got when I ran into this problem:

05-17 13:09:53.462: ERROR/CustomExceptionHandler(500): Uncaught throwable in thread Thread[main,5,main]
    android.content.res.Resources$NotFoundException: Resource ID #0x0
    at android.content.res.Resources.getValue(Resources.java:1014)
    at android.content.res.Resources.loadXmlResourceParser(Resources.java:2039)
    at android.content.res.Resources.getLayout(Resources.java:853)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:389)
    at android.widget.TabHost$LabelAndIconIndicatorStrategy.createIndicatorView(TabHost.java:568)
    at android.widget.TabHost.addTab(TabHost.java:226)
    at com.myApp.ui.TabDialog.addTab(TabDialog.java:80)
    ...

在那行,我有code大致相当于什么斯帕克看到:

At that line, I have code roughly equivalent to what sparky saw:

spec = myTabHost.newTabSpec("score_game").setIndicator("Score", res.getDrawable(R.drawable.icon_field_gloss)).setContent(intent);
myTabHost.addTab(spec);

注意 myTabHost 是一个TabHost和规格是一则tabspec。

Note that myTabHost is a TabHost and spec is a TabSpec.

previously,我被初始化 myTabHost 是这样的:

Previously, I was initializing myTabHost like this:

//WRONG - This can CRASH your app starting at Android SDK 3.0
TabHost myTabHost = new TabHost(getContext()); 

要解决这个问题,我开始做这个初始化TabHost:

To fix this problem, I started initializing the TabHost by doing this:

TabHost myTabHost = new TabHost(getContext(), null); 

这固定它!我很想找到一个根本原因,但我还没有能够找到答案。

And that fixed it! I would love to find a root cause, but I haven't yet been able to figure it out.

这篇关于蜂窝TabHost规格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆