すべてのUIをプログラムで「オンデマンド」で作成する必要があります。つまり、XMLを使用できません。これは私がしていることの擬似コードです:
View v = new MyView();
activity.setContentView(v);
tabHost = new TabHost();
....
tabHost.setup();
TabSpec tabSpec = _tabHost.newTabSpec(page);
tabSpec.setIndicator(title);
tabSpec.setContent((TabContentFactory) this);
activity.setContentView(tabHost);
したがって、TabContentFactoryが呼び出されると、現在のアクティビティのコンテンツビューであるビューが返されます。基本的に私がしていることは、現在のビューを取得してタブホストでラップすることです。半分は機能します。これを行うとタブバーが表示されますが、その下の黒いビューのみが表示されます。他のタブをクリックしてから戻ると、ビューが表示され、すべてが意図したとおりに機能します。
なぜ私はそれがに関連していると思うのですかsetContentView
、なぜなら私がこれをするとき:
View v = new MyView();
// activity.setContentView(v); // we don't use it as current content view
tabHost = new TabHost();
....
tabHost.setup();
TabSpec tabSpec = _tabHost.newTabSpec(page);
tabSpec.setIndicator(title);
tabSpec.setContent((TabContentFactory) this);
その後、すべてが完全に機能しています。助けてくれてありがとう!