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.
In particular, when I add tabs to the TabHost, I get the following exception
android.content.res.Resources$NotFoundException: Resource ID #0x0
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.
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:
At that line, I have code roughly equivalent to what sparky saw:
Note that
myTabHost
is a TabHost andspec
is a TabSpec.Previously, I was initializing
myTabHost
like this:To fix this problem, I started initializing the TabHost by doing this:
And that fixed it! I would love to find a root cause, but I haven't yet been able to figure it out.