我是靠谱客的博主 积极大象,最近开发中收集的这篇文章主要介绍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 tabhost 多个activity,Android:TabHost中Activity的生命周期问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部