天天看点

不继承ActivityGroup、TabActivity 实现TabHost

项目中要用到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>
           

如果帮到你了,请帮忙留个脚印,谢谢!

继续阅读