日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

發布時間:2023/12/10 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的生命周期问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。