您的位置:首页 > 其它

不继承ActivityGroup、TabActivity 实现TabHost

2014-06-03 10:45 351 查看
项目中要用到Tabhost,但是我必须继承自己重写过的BaseActivity。但是,这样一来,就没法继承ActivityGroup和TabActivity。

百度了大量的解决方法,找到了这篇文章:http://blog.csdn.net/chenzheng_java/article/details/6208020 
,不得不说的是,你转可以,你自己运行验证一下再转可以么?

简直就是误人子弟。

废话不多说,先上我的解决方法:

方法链接:http://blog.csdn.net/jdsjlzx/article/details/7678171#

public class MainTabActivity extends Activity {
private TabHost mHost;
// 在Activity中使用Tabhost必须要有LocalActivityManager物件来设定
LocalActivityManager lam;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// main layout采用预设的Tabhost
mHost = (TabHost) findViewById(android.R.id.tabhost);

lam = new LocalActivityManager(MainTabActivity.this, false);
lam.dispatchCreate(savedInstanceState);

mHost.setup(lam);
mHost.addTab(mHost.newTabSpec("Tab1").setIndicator("Tab1").setContent(new Intent(MainTabActivity.this, FragmentActivity1.class)));
mHost.addTab(mHost.newTabSpec("Tab2").setIndicator("Tab2").setContent(new Intent(MainTabActivity.this, FragmentActivity2.class)));
}
@Override
protected void onPause() {
// 重写的OnPause方法必须有,漏掉会错
lam.dispatchPause(isFinishing());
super.onPause();
}
@Override
protected void onResume() {
// 这个也一样
lam.dispatchResume();
super.onResume();
}
}

<span style="font-size:14px;">关于LocalActivityManager,它是TabActivity下的方法,只能继承TabActivity之后才可以调用,这个大家都知道。当时看到这段代码的时候我也是半信半疑,如果继承Activity的话,LocalActivityManager是没法自动补全的,只可以手打,然后你会发现,已经被打了删除线,不过可以用</span>
如果帮到你了,请帮忙留个脚印,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐