Honeycomb and TabHost specs

后端 未结 1 1767
眼角桃花
眼角桃花 2020-12-21 04:08

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 TabAct

相关标签:
1条回答
  • 2020-12-21 04:44

    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)
        ...
    

    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);
    

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

    Previously, I was initializing myTabHost like this:

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

    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.

    0 讨论(0)
提交回复
热议问题