android tabhost 多个activity,Android:TabHost中Activity的生命周期问题
用过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的生命周期问题相关推荐
- android中应用程序生命周期,Android应用程序生命周期中的活动和图标
面向大众的移动技术,第3部分 为您的Android移动应用程序添加导航样式 安德鲁·格洛弗 2013年7月25日发布 面向大众的移动技术 请期待本系列的后续内容. 请期待本系列的后续内容. 近年来,移 ...
- Android之React Native 中组件的生命周期
React Native 中组件的生命周期 概述 就像 Android 开发中的 View 一样,React Native(RN) 中的组件也有生命周期(Lifecycle).所谓生命周期,就是一个对 ...
- android activity 切换屏幕方向时的生命周期
1.不设置Activity的Android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 2.设置Activity的android:configCh ...
- android viewpager fragment 生命周期,ViewPager中Fragment的生命周期
网上有很多Fragment生命周期的帖子,但是看了一下,没有找到自己想了解的东西,于是决定自己动手体验一下这个生命周期.主要想了解以下几个问题: Activity中的Fragment的生命周期 Vie ...
- Activity为singleTask模式时的生命周期
Activity为singleTask模式时的生命周期 Activity A:android:launchMode="singleTask" Activity B:launchMo ...
- java 中 bean 的生命周期
java 中 bean 的生命周期 本篇中会对涉及到的知识点皆做出描述: 首先,我们先了解先虚拟机的类加载机制: 虚拟机把描述类的数据从Class 文件中加载到内存,并对数据进行校验.转换解析和初始化 ...
- java for(o t :object) 获取顺序号_java中线程的生命周期
线程是java中绕不过去的一个话题, 今天本文将会详细讲解java中线程的生命周期,希望可以给大家一些启发. java中Thread的状态 java中Thread有6种状态,分别是: NEW – 新创 ...
- Spring 中 Bean 的生命周期
本文作者: 伯乐在线 - yemengying 智商捉鸡?,实在没办法一下子理解Spring IoC和AOP的实现原理,看的闹心也不太懂,所以...决定拆成小的不能在小的一个个问题,一点点啃.今天先来 ...
- 4.事务提交过程,事务基本概念,Oracle中的事务生命周期,保存点savepoint,数据库的隔离级别
事务提交过程 事务 基本概念 概念:一个或者多个DML语言组成 特点:要么都成功,要么都失败 事务的隔离性:多个客户端同时操作数据库的时候,要隔离它们的操作, 否则出现:脏读 不可重复读 幻 ...
- java中线程的生命周期
文章目录 java中Thread的状态 NEW Runnable BLOCKED WAITING TIMED_WAITING TERMINATED java中线程的生命周期 线程是java中绕不过去的 ...
最新文章
- java初始化实例化_Java对象的创建过程:类的初始化与实例化
- OPPO和微软合作,开放“召唤小冰”
- Java线程池使用与原理
- Vodafone A/B测试实践
- java实现对HDFS增删改查(CRUD)等操作
- SAP Batch表MCH1和MCHA的差别?
- 人工智能(17)----人工智能视频监控 实用性有待提高
- 根据我4年Facebook营销经验,和大家聊聊做不好Facebook广告的原因!
- 雷军自述:我惨痛的大学创业失败经历
- windows交互式登陆
- Bolt界面引擎 HostWnd的生存周期以及相应的objtree的绑定问题
- (网络编程)SOCKET应用实例
- 请问大家,有没有法学相关的毕业论文选题 ?
- CSP 201903-2 二十四点 python (python有如神助)
- 如何修改手游版本服务器,原神怎么只下一次客户端 b服官服渠道服手机自由切换方法...
- dell设置从ssd启动_2. 戴尔电脑如何设置固态硬盘启动?
- Loadrunner执行https报错Action.c(7): Error -27778: SSL protocol error when attempting to connect with hos
- 数据库设置定期删除14天前的数据
- Lacking counting POJ.NO 2386
- HTML初识:网页结构、标签、特殊符号、列表
热门文章
- mysql 表ful,你所不知的table is full那些事
- JAVA如何代码静态检查术语_Sonar代码静态检查规则-JAVA篇(二)
- 基于小波包的图像压缩及matlab实现,基于小波包的图像压缩及matlab实现精选.doc...
- java nashorn maven_使用mvn创建java工程的极简教程
- int a[5]={}, a+1与(int*)a+1的区别
- React开发(284):注意点击事件大小写
- [react] react中发起网络请求应该在哪个生命周期中进行?为什么?
- React开发(214):React中的Fragments
- Taro+react开发(67):数组中push返回的是长度
- 前端学习(3321):瀑布流的方式演示