最近做一个项目中使用了tabhost,但是在控制activity的时候那几个方法总是无法执行,百思不得其解,最后再网上找到了解决方案,如下:
我们都知道Activity的生命周期函数有
void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
但是在TabHost中当设置activity作为Tab的content时,在activity中重载的onResume(),onPause(),onStop()是没有效用的
即如果在这些函数中有自定义方法是无法执行的。
在TabHost所在的activity中添加如下代码用于管理子activity的生命周期
代码:
- @Override
- protected void onResume() {
- super.onResume();
- mlocalActivityManager.dispatchResume();
- }
- @Override
- protected void onPause() {
- super.onPause();
- mlocalActivityManager.dispatchPause(isFinishing());
而如果想在切换tab时执行子activity的onResume()中的自定义代码可以使用:
- private OnTabChangeListener TabChangeListener = new OnTabChangeListener() {
-
- @Override
- public void onTabChanged(String tabId) {
- if (tabId.equals("tab1")){
- mlocalActivityManager.dispatchPause(isFinishing());
- mlocalActivityManager.dispatchResume();
- tabs.setCurrentTab(1);// tab1是添加的第二个tab
- }
- }
- };
原文转自:
http://www.apkbus.com/android-51654-1-1.html