用ActivityGroup解决TabHost中多个Activity跳转问题
下面图片是测试程序的效果图
两个选项卡的实现
布局文件 main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@android:id/tabhost" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <LinearLayout android:orientation="vertical"
- android:layout_width="fill_parent" android:layout_height="fill_parent">
- <TabWidget android:id="@android:id/tabs"
- android:layout_width="fill_parent" android:layout_height="wrap_content" />
- <FrameLayout android:id="@android:id/tabcontent"
- android:layout_width="fill_parent" android:layout_height="wrap_content"
- android:layout_weight="3">
- </FrameLayout>
- </LinearLayout>
- </TabHost>
- </LinearLayout>
Java代码实现 MainActivity.java
- package hkp.test;
- import android.app.TabActivity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.widget.TabHost;
- public class MainActivity extends TabActivity {
- private TabHost tabHost;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- tabHost = getTabHost();
- tabHost.addTab(tabHost.newTabSpec("tab1")
- .setIndicator("First")
- .setContent(new Intent(this,FirstGroupTab.class)));//第一个选项卡使用一个ActivityGroup
- tabHost.addTab(tabHost.newTabSpec("tab2")
- .setIndicator("Second")
- .setContent(new Intent(this, SecondTab.class)));//第二个选项卡是一个Activity
- tabHost.setCurrentTab(0);
- }
- }
使用 ActivityGroup的管理
- package hkp.test;
- import android.app.ActivityGroup;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.Window;
- /**
- * @author HuangKaipeng hkp2006@gmail.com
- * 2011-10-5
- *
- */
- public class FirstGroupTab extends ActivityGroup {
- /**
- * 一个静态的ActivityGroup变量,用于管理本Group中的Activity
- */
- public static ActivityGroup group;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- group = this;
- }
- @Override
- public void onBackPressed() {
- // TODO Auto-generated method stub
- // super.onBackPressed();
- //把后退事件交给子Activity处理
- group.getLocalActivityManager()
- .getCurrentActivity().onBackPressed();
- }
- @Override
- protected void onResume() {
- // TODO Auto-generated method stub
- super.onResume();
- //把界面切换放到onResume方法中是因为,从其他选项卡切换回来时,
- //调用搞得是onResume方法
- //要跳转的界面
- Intent intent = new Intent(this, FirstActivity.class).
- addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- //把一个Activity转换成一个View
- Window w = group.getLocalActivityManager().startActivity("FirstActivity",intent);
- View view = w.getDecorView();
- //把View添加大ActivityGroup中
- group.setContentView(view);
- }
ActivityGroup中的第一个Activity
- package hkp.test;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.Window;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- /**
- * @author HuangKaipeng hkp2006@gmail.com
- * 2011-10-5
- *
- */
- public class FirstActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.first_activity);
- //跳转到第二个界面
- Button btn = (Button) findViewById(R.id.btn);
- btn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- Intent intent = new Intent(FirstActivity.this, SecondActivity.class).
- addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- //把一个Activity转换成一个View
- Window w = FirstGroupTab.group.getLocalActivityManager()
- .startActivity("SecondActivity",intent);
- View view = w.getDecorView();
- //把View添加大ActivityGroup中
- FirstGroupTab.group.setContentView(view);
- }
- });
- }
- }
XML
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="这个是ActivityGroup中的第一个界面!"
- />
- <Button android:id="@+id/btn"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="跳转到本组中的另一个Activity中"/>
- </LinearLayout>
用ActivityGroup解决TabHost中多个Activity跳转问题相关推荐
- Tabhost嵌套以及Tab中多个Activity跳转的实现
今天明白了Tabhost嵌套和Tab里实现多个Activity的跳转原理,自己做了一个demo,先看看效果图: 源码 如下: [java] view plaincopy (1) DoubleTabHo ...
- android activity跳转生命周期,Android中从一个Activity跳转到另一个Activity所经历的生命周期........
凡是Android开发人员都知道"Activity"是非常重要的:对其该"Activity"生命周期相信大家也比较熟悉了. 这篇文章主要探讨的是"从一 ...
- ActivityGroup中的子Activity创建Dialog:android.view.WindowManager$BadTokenException: U
我们在ActivityGroup或者TabActivity中的子Activity创建Dialog若使用以下的代码 progressDialog = new ProgressDialog(XXX.thi ...
- android tabhost 多个activity,Android:TabHost中Activity的生命周期问题
用过TabHost制作多个activity的分页效果的朋友应该知道,tabhost中镶嵌的activity的onCreate和onDestroy是和tabhost关联的,在创建了tabhost之后,第 ...
- Github项目解析(九)--实现Activity跳转动画的五种方式
2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请标明出处:一片枫叶的专栏 上一篇文章中我们讲解了在Activity ...
- Android -- 基础篇 -- Activity跳转动画的五种方式(下)
上一篇文章中我们讲解了在Activity启动过程中获取组件宽高的五种方式.在Activity的启动过程中如果我们直接在生命周期方法中通过view.getWidth()或者是view.getHeight ...
- Android TabHost中切換、修改需要显示的Activity
上個星期跟盛哥試了一段時間使用Fragment後還是不得其門而入(兩個人對Fragment都還不太熟悉),卡住的原因是現在有兩個Tab,當Tab1進入到第二個畫面,Tab2進到第三個畫面,但使用者切回 ...
- Android TabHost中实现标签的滚动以及一些TabHost开发的奇怪问题
最近在使用TabHost的时候遇到了一些奇怪的问题,在这里总结分享备忘一下. 首先说一点TabActivity将会被FragmentActivity所替代,但是本文中却是使用的TabActivity. ...
- 解决ActionBar中不显示item的问题,item显示在overflow中
解决ActionBar中不显示item的问题,item显示在overflow中 一.问题描述 使用ActionBar时,需要增加一个菜单选项,即在/menu/main.xml的布局文件中添 ...
最新文章
- oracle 11g安装卸载,安装及卸载oracle 11g步骤
- mave工程中的一个类调用另一个聚合工程的一个类_谈谈设计模式:建造者模式在jdk中的体现,它和工厂模式区别?...
- log4j2使用笔记
- webdriver 爬虫 java_java爬虫通过selenium+WebDriver遍历页面链接报错
- 编译rocksdb源码导致的部署失败
- 腾讯校园招聘笔试 2019-8-17 第四题 另一种解法
- 干货:io流带时间的聊天室【客户端与服务端】
- CentOS查找redis配置文件及防火墙相关命令
- mysql跨服务跨库查询
- 第1章第15节:导出:如何将幻灯片保存为图片格式的文件 [PowerPoint精美幻灯片实战教程]
- mysql 迁移 myd_mysql文件*.opt *.frm *.MYI *.MYD的迁移
- W3C 验证的是是非非
- AAC的ADTS头解析
- android studio 报错 AAPT: error: style attribute ‘attr/colorPrimary (aka com.
- struck.unpack
- 内大计算机学院马学彬,内蒙古大学 计算机学院 2012-2013(一)课程总表.doc
- python PyAutoGUI 模拟鼠标键盘操作和截屏
- mysql gbk排序规则_Mysql 字符集及排序规则
- 什么是Activity?Activity的生命周期!
- 服务器绑定自己的域名-腾讯云