已经弃用的TabActivity深深的伤害了我

来源:互联网 发布:淘宝国民党军服 编辑:程序博客网 时间:2024/04/28 06:20

在仿写别人的代码的时候发现用到的TabActivity被自动化掉了,仔细一看已经被弃用,deprecated了。

所以我就上网搜啊搜。看别人的博文。这位大神蛙齋所写如下

1. 把TabActivity改成Activity(廢話 …)

?
publicclass MainActivity extendsTabActivity
?
publicclass MainActivity extendsActivity

2. 取得TabHost物件,這裡不能透過像TabActivity一樣直接用getTabHost();。

?
TabHost tabHost = getTabHost();
?
TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);

3. 增加一個LocalActivityManager物件。這幾行是一定不能少,少了對大家都不好DDMS會一直報出大量的錯誤訊息。

?
1
2
3
LocalActivityManager lam = newLocalActivityManager(MainActivity.this,false);
lam.dispatchCreate(savedInstanceState);
mHost.setup(lam);

4. 最後最重要的重頭戲部份Override onPause及onResume(這個應該是有看過Source的人才知道的吧!小蛙太弱了><),少了這邊的設定,就算上面全部都對,到這邊還是會狂錯(感謝Stack Overflow的dcanh121以及CJ Villa)。

?
1
2
3
4
5
6
7
8
9
10
@Override
protectedvoid onPause() {
    lam.dispatchPause(isFinishing());
    super.onPause();
}
@Override
protectedvoid onResume() {
    lam.dispatchResume();
    super.onResume();
}

如果有任何一個步驟漏掉,會得到以下錯誤。

?
Caused by: java.lang.IllegalStateException: Activities can't be added until the containing group has been created.

到這邊就已經完成囉!其他tabHost.addTab的使用方式一模一樣。接下來會再另一篇說明怎麼在TabHost裡面切換多個Activity,並且讓每個頁籤中的Back Stack可以獨立運作。


但是当我百写不得解决的时候,我放弃了。

我直接不管不顾的直接向下写,知道最后。

然后我很惊奇的发现最后无关大局,很顺利的运行了。


所以我得出了结论,当你看不懂甚至怀疑别人所写的代码的时候,别怀疑,没资格,到最后再试一试吧。android里的各个控件联系太深了。


1 0