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

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

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

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

?
public class MainActivity extends TabActivity
?
public class MainActivity extends Activity

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

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

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

?
1
2
3
LocalActivityManager lam = new LocalActivityManager(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
protected void onPause() {
     lam.dispatchPause(isFinishing());
     super .onPause();
}
@Override
protected void 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值