用过TabHost制作多个activity的分页效果的朋友应该知道,tabhost中镶嵌的activity的onCreate和onDestroy是和tabhost关联的,在创建了tabhost之后,第一次访问某个activity会执行这个activity的oncreate事件,以后切回来时只会执行onResume事件。而一般情况下tabhost内的activtiy的onDestroy事件会在调用tabhost的onDestroy时统一调用。

但是我今天遇到一个问题。我想实现一个动态加载Tabhost内的Activity的效果,即:假设这个Tabhost内有两个tab页tab1和tab2,分别放置Tab1Activy和Tab2Activity,在点击了tab1内的按钮后我要把tab2变成tab3,tab3内放置Tab3Activty。现在我跟踪Tab3Activity的生命周期,很神奇的发现每次在tab1和tab3之间切换时,Tab3Activity都会调用onDestroy和onCreate方法,这是怎么回事呢? 附上我动态修改Tab页的代码。

MainActivity

package com.example.tabhostdemo;

import java.util.ArrayList;

import android.os.Bundle;

import android.app.Activity;

import android.app.LocalActivityManager;

import android.app.TabActivity;

import android.content.Intent;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.widget.TabHost;

import android.widget.TabHost.TabSpec;public classMainActivity extends TabActivity {public staticTabHost mtabHost;public static ArrayList lSpecs=new ArrayList();

@Overrideprotected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mtabHost=this.getTabHost();

LayoutInflater inflater=LayoutInflater.from(this);

//将创建的TabSpec对象加入数组

TabSpec tabSpec=mtabHost.newTabSpec("1").setIndicator("TAB1").setContent(new Intent(this, Tab1Activity.class));

mtabHost.addTab(tabSpec);

lSpecs.add(tabSpec);

tabSpec=mtabHost.newTabSpec("2").setIndicator("tab2").setContent(new Intent(this, Tab2Activity.class));

mtabHost.addTab(tabSpec);

lSpecs.add(tabSpec);

tabSpec=mtabHost.newTabSpec("2").setIndicator("tab3").setContent(new Intent(this, Tab3Activity.class));

lSpecs.add(tabSpec);

}

@Overridepublicboolean onCreateOptionsMenu(Menu menu) {//Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);return true;

}

}

Tab1Activity:

package com.example.tabhostdemo;

import java.util.ArrayList;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.TabHost;

import android.widget.Toast;

import android.widget.TabHost.TabSpec;public classTab1Activity extends Activity {

TabHost mtabHost;

ArrayList lSpecs=new ArrayList();

@Overrideprotected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.tab1);

mtabHost=MainActivity.mtabHost;//获取tabhost对象

lSpecs=MainActivity.lSpecs;//获取所有的Tabspecs对象

Log.i("11","tab1 onstart");

}public voidbtn_tab1_onclick(View v) {

mtabHost.clearAllTabs();//清空 重新添加

mtabHost.addTab(lSpecs.get(1));

mtabHost.addTab(lSpecs.get(2));//Toast.makeText(this, "tab1", Toast.LENGTH_LONG).show();

}

@Overridepublic voidonResume() {

Log.i("11","tab1 onresume");

super.onResume();

}

@Overrideprotected voidonDestroy() {//TODO Auto-generated method stub

Log.i("11","tab1 ondestroy");

super.onDestroy();

}

}

android tabhost 多个activity,Android:TabHost中Activity的生命周期问题相关推荐

  1. android中应用程序生命周期,Android应用程序生命周期中的活动和图标

    面向大众的移动技术,第3部分 为您的Android移动应用程序添加导航样式 安德鲁·格洛弗 2013年7月25日发布 面向大众的移动技术 请期待本系列的后续内容. 请期待本系列的后续内容. 近年来,移 ...

  2. Android之React Native 中组件的生命周期

    React Native 中组件的生命周期 概述 就像 Android 开发中的 View 一样,React Native(RN) 中的组件也有生命周期(Lifecycle).所谓生命周期,就是一个对 ...

  3. android activity 切换屏幕方向时的生命周期

    1.不设置Activity的Android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 2.设置Activity的android:configCh ...

  4. android viewpager fragment 生命周期,ViewPager中Fragment的生命周期

    网上有很多Fragment生命周期的帖子,但是看了一下,没有找到自己想了解的东西,于是决定自己动手体验一下这个生命周期.主要想了解以下几个问题: Activity中的Fragment的生命周期 Vie ...

  5. Activity为singleTask模式时的生命周期

    Activity为singleTask模式时的生命周期 Activity A:android:launchMode="singleTask" Activity B:launchMo ...

  6. java 中 bean 的生命周期

    java 中 bean 的生命周期 本篇中会对涉及到的知识点皆做出描述: 首先,我们先了解先虚拟机的类加载机制: 虚拟机把描述类的数据从Class 文件中加载到内存,并对数据进行校验.转换解析和初始化 ...

  7. java for(o t :object) 获取顺序号_java中线程的生命周期

    线程是java中绕不过去的一个话题, 今天本文将会详细讲解java中线程的生命周期,希望可以给大家一些启发. java中Thread的状态 java中Thread有6种状态,分别是: NEW – 新创 ...

  8. Spring 中 Bean 的生命周期

    本文作者: 伯乐在线 - yemengying 智商捉鸡?,实在没办法一下子理解Spring IoC和AOP的实现原理,看的闹心也不太懂,所以...决定拆成小的不能在小的一个个问题,一点点啃.今天先来 ...

  9. 4.事务提交过程,事务基本概念,Oracle中的事务生命周期,保存点savepoint,数据库的隔离级别

     事务提交过程 事务 基本概念 概念:一个或者多个DML语言组成 特点:要么都成功,要么都失败 事务的隔离性:多个客户端同时操作数据库的时候,要隔离它们的操作, 否则出现:脏读  不可重复读  幻 ...

  10. java中线程的生命周期

    文章目录 java中Thread的状态 NEW Runnable BLOCKED WAITING TIMED_WAITING TERMINATED java中线程的生命周期 线程是java中绕不过去的 ...

最新文章

  1. java初始化实例化_Java对象的创建过程:类的初始化与实例化
  2. OPPO和微软合作,开放“召唤小冰”
  3. Java线程池使用与原理
  4. Vodafone A/B测试实践
  5. java实现对HDFS增删改查(CRUD)等操作
  6. SAP Batch表MCH1和MCHA的差别?
  7. 人工智能(17)----人工智能视频监控 实用性有待提高
  8. 根据我4年Facebook营销经验,和大家聊聊做不好Facebook广告的原因!
  9. 雷军自述:我惨痛的大学创业失败经历
  10. windows交互式登陆
  11. Bolt界面引擎 HostWnd的生存周期以及相应的objtree的绑定问题
  12. (网络编程)SOCKET应用实例
  13. 请问大家,有没有法学相关的毕业论文选题 ?
  14. CSP 201903-2 二十四点 python (python有如神助)
  15. 如何修改手游版本服务器,原神怎么只下一次客户端 b服官服渠道服手机自由切换方法...
  16. dell设置从ssd启动_2. 戴尔电脑如何设置固态硬盘启动?
  17. Loadrunner执行https报错Action.c(7): Error -27778: SSL protocol error when attempting to connect with hos
  18. 数据库设置定期删除14天前的数据
  19. Lacking counting POJ.NO 2386
  20. HTML初识:网页结构、标签、特殊符号、列表

热门文章

  1. mysql 表ful,你所不知的table is full那些事
  2. JAVA如何代码静态检查术语_Sonar代码静态检查规则-JAVA篇(二)
  3. 基于小波包的图像压缩及matlab实现,基于小波包的图像压缩及matlab实现精选.doc...
  4. java nashorn maven_使用mvn创建java工程的极简教程
  5. int a[5]={}, a+1与(int*)a+1的区别
  6. React开发(284):注意点击事件大小写
  7. [react] react中发起网络请求应该在哪个生命周期中进行?为什么?
  8. React开发(214):React中的Fragments
  9. Taro+react开发(67):数组中push返回的是长度
  10. 前端学习(3321):瀑布流的方式演示