【目的】TabHost>TabWidget内のタブを一つだけ削除したい
(TabHost.clearAllTabs()による全タブ削除じゃなくて)
(実装環境:GalaxyNexus ver_4.0.4)
調べ方が悪かったのか、なかなか見つかりませんでした…
しかも解決策として採用したのが2008年の見知らぬ海外の掲示板でのやりとりという…
(参照先URL:http://www.coderanch.com/t/460859/Android/Mobile/TabHost-Remove-Tab)
もっと正規の方法があるかもしれませんが、一応メモです。
<タブ削除の為の下準備>
1.TabHost.TabSpecのListを作成しておく
List<TabHost.TabSpec> tabSpecs = new ArrayList<TabHost.TabSpec>();
2.タブ追加時に生成したTabHost.TabSpecインスタンスをListに格納しておく
TabHost.TabSpec tabSpec = new tabHost.newTabSpec([TabId]).setIndicator(...);
tabHost.addTab(tabSpec);
tabSpecs.add(tabSpec);
<タブ削除の手順>
3.Listから削除したいタブに相当するTabHost.TabSpecを削除する
tabSpecs.remove([index]);
4.タブを一度、全削除する
tabHost.clearAllTabs();
5.Listを利用して、再度タブを生成する
for(TabHost.TabSpec ts : tabSpecs){
tabHost.addTab(ts);
}
これで、おそらくタブを一つだけ削除した状態になる…かと…
でもこれってメモリの食い具合ってどうなるのでしょう…
捨てたつもりが実は捨ててないとか、ありそう、うぅん…
ちなみにわたしは諸事情により、TabHost.addTab(...)以降に
動的にタブのラベルやアイコンを変更したりしていたのですが
上記の手順では一旦全部のタブを消去して、タブを作り直してしまっているので
それらの変更もきれいさっぱりなくなっちゃいました…
なのでその辺の対応もしなくてはならなくなり、正直面倒くs…ゲフンゲフン。
0 件のコメント:
コメントを投稿