`
yzyspy
  • 浏览: 82190 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ActivityGroup 与TabActivity

 
阅读更多

首先定义一个主布局文件

hello_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/cust_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn"
        android:textColor="@android:color/white"
        android:textSize="28sp" />

    <!-- 中间动态加载View -->

    <ScrollView
        android:id="@+id/containerBody"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:measureAllChildren="true" >
    </ScrollView>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="@android:color/black"
        android:orientation="horizontal" >

        <!-- 功能模块按钮1 -->

        <Button
            android:text="@string/btn"
            android:id="@+id/btnModule1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="3dp"
            android:layout_marginLeft="7dp"
            android:layout_marginTop="3dp" />
        <!-- 功能模块按钮2 -->

        <Button
             android:text="@string/btn"
            android:id="@+id/btnModule2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="3dp"
            android:layout_marginLeft="7dp"
            android:layout_marginTop="3dp" />
        <!-- 功能模块按钮3 -->

        <Button
             android:text="@string/btn"
            android:id="@+id/btnModule3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="3dp"
            android:layout_marginLeft="7dp"
            android:layout_marginTop="3dp" />
    </LinearLayout>

</LinearLayout>
   
HelloActivity.java
/*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.android.helloactivity;
import android.view.View;
import android.content.ComponentName;
import android.content.Intent;
import android.widget.Button;
import android.widget.ScrollView;
//import android.media.MediaScanner; @hide
import android.media.MediaPlayer;
import android.app.Activity;
import android.app.ActivityGroup;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.SystemClock;
import android.graphics.Paint;
import android.os.Handler;
import android.widget.Toast;
import android.util.Log;
public class HelloActivity extends ActivityGroup {

    //am start -n com.cmcc.mbbms/com.cmcc.mbbms.MainActivity
    
    private ScrollView container = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 隐藏标题栏
      //  requestWindowFeature(Window.FEATURE_NO_TITLE);
        // 设置视图
        setContentView(R.layout.hello_activity);

        container = (ScrollView) findViewById(R.id.containerBody);

        // 模块1
        Button btnModule1 = (Button) findViewById(R.id.btnModule1);
        btnModule1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                container.removeAllViews();
                Intent intent =  new Intent();
                ComponentName comp = new ComponentName(
                        "com.cmcc.mbbms",
                        "com.cmcc.mbbms.MainActivity");
                intent.setComponent(comp);
            
                container.addView(getLocalActivityManager().startActivity(
                        "Module1",
                        intent)
                        .getDecorView());
            }
        });

        // 模块2
        Button btnModule2 = (Button) findViewById(R.id.btnModule2);
        btnModule2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                container.removeAllViews();
                Intent intent =  new Intent();
                ComponentName comp = new ComponentName(
                        "com.android.calendar",
                        "com.android.calendar.MonthActivity");
                intent.setComponent(comp);
            
                container.addView(getLocalActivityManager().startActivity(
                        "Module2",
                        intent)
                        .getDecorView());
            }
        });


        // 模块3
        Button btnModule3 = (Button) findViewById(R.id.btnModule3);
        btnModule3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                container.removeAllViews();
                Intent intent =  new Intent();
                ComponentName comp = new ComponentName(
                        "com.android.soundrecorder",
                        "com.android.soundrecorder.SoundRecorder");
                intent.setComponent(comp);
            
                container.addView(getLocalActivityManager().startActivity(
                        "Module3",
                        intent)
                        .getDecorView());
            }
        });

    }
}
  

ActivityGroup 为什么不能启动一个其他进程的Activity

解决方法:
1、在activityThread.java的代码里添加对安全忽略即可。
 r.packageInfo = getPackageInfo(aInfo.applicationInfo,
  Context.CONTEXT_INCLUDE_CODE + Context.CONTEXT_IGNORE_SECURITY);

2、
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.test"
  android:versionCode="1"
  android:sharedUserId="com.android.activitygrouptest"
  android:versionName="1.0">

设定sharedUserId一致就可以了,这样两个apk会加载到同一个process中运行,同时要把你要启动的activity launchemode 设定为singletop。

 

 

只能启动同一个进程的Actvity  Intent intent =  new Intent(HelloActivity.this,HelloActivity1.class);

public class HelloActivity2 extends ActivityGroup {

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       //动态添加按钮
        LinearLayout  tp = new LinearLayout(this);
        LayoutParams ltp = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
        Button btn = new Button(this);
        btn.setWidth(100);
        btn.setText("HelloActivity2");
        tp.addView(btn,ltp);
        this.setContentView(tp);
    }
}
 

 

 

 

分享到:
评论

相关推荐

    ActivityGroup 代替TabActivity的用法

    ActivityGroup 代替 TabActivity 的用法 Android 开发中,TabActivity 已经被废除,而使用 ActivityGroup 来代替 TabActivity,可以更加自由灵活,少很多限制和依赖。ActivityGroup 是 Google 提供的一个非常优秀的...

    tabhost和ActivityGroup的组合使用

    每个标签需要指定一个TabSpec,它包含了标签的显示文本、图标以及与之关联的Intent。 4. 设置内容:每个TabSpec需要关联一个Intent,这个Intent可以启动一个新的Activity或Fragment,以展示标签页的内容。 接下来,...

    Android源码——TabHost内嵌ActivityGroup界面管理源码_new_17.7z

    在Android中,TabHost通常与TabWidget(显示选项卡)和FrameLayout(显示内容)一起使用。TabHost的工作流程是:当用户点击选项卡时,它会根据预先配置的信息加载相应的Activity或Fragment。 然后,我们来看...

    使用ActivityGroup来切换Activity和Layout

    `ActivityGroup`是`TabActivity`的一种替代方案,它允许我们在一个父`Activity`中嵌套多个子`Activity`,并在需要时动态替换内容。 首先,我们需要了解`ActivityGroup`的核心概念。`ActivityGroup`是`Sherlock`库中...

    Android TabHost内嵌ActivityGroup界面管理源码.zip

    其中也包括了TabActivity去实现的,TabActivity 里面每个选项卡里面会有个默认的界面,但是当你的应用这个模块里面不止是一个界面,并且第二个界面里面,还需要你去显示下面的选项卡,很多人都会用到ActivityGroup,...

    TabActivity中的Tab标签详细设置

    在Android开发中,TabActivity是早期用来实现底部标签栏切换页面的一种方式,它结合了TabHost和ActivityGroup来实现多页面间的切换。然而,随着Android版本的更新,TabActivity已经逐渐被Fragment和ViewPager等组件...

    TabActivity笔记

    这篇笔记主要探讨了`TabActivity`的使用方法及其背后的原理,同时也涉及到了一些与之相关的工具和源码分析。 首先,`TabActivity`是Android SDK中的一个类,它继承自`ActivityGroup`,在API level 13被标记为过时,...

    ActivityGroup框架

    与传统的TabActivity不同,每个Tab不再仅仅绑定一个Activity,而是可以绑定一系列的Activity,这样用户在同一个Tab内就能体验到多级菜单或丰富的功能模块。 在ActivityGroup中,主要通过自定义的...

    ActivityGroup|顶部底部均有Tab标签之二

    在描述中提到的博客文章中,开发者可能详细介绍了如何将`TabActivity`与`ActivityGroup`结合,以实现在顶部和底部都有Tab的效果。`ActivityGroup`是一个旧的类,用于管理在一个`LocalActivityManager`中的子Activity...

    Android Fragment应用实战Demo,向ActivityGroup说再见 源码程序

    7. **TabHost与TabActivity**:在旧版本的Android中,TabHost和TabActivity通常用于实现标签页切换。然而,由于Fragment的出现,现在推荐使用FragmentTabHost和FragmentTransaction来实现相同的功能,这种方式更符合...

    TabActivity使用实例

    `TabActivity`是Android 2.x版本中的一部分,它基于`ActivityGroup`,允许在一个`Activity`中嵌套多个子`Activity`,每个子`Activity`对应一个标签页。这种方式现在看来并不推荐,因为它带来了复杂的生命周期管理...

    ActivityGroup Demo

    `ActivityGroup`是`TabActivity`的一个子类,它允许开发者在单一的Tab或窗口内嵌套多个Activity,提供了一种在不创建新窗口的情况下展示多个界面的方式。这个"ActivityGroup Demo"是为了帮助开发者理解和学习如何...

    ActivityGroup demo

    ActivityGroup是在Android早期版本中,为了在TabHost或者TabActivity中实现嵌套Activity而设计的一种特殊类型的Activity。它允许在一个Activity内部启动其他Activity,形成一个嵌套的Activity结构。然而,随着...

    Android之ActivityGroup + GridView 实现Tab分页标签

    读者也许会马上想到使用TabHost 与 TabActivity的组合,其实最常用的不是它们,而是由GridView与ActivityGroup的组合。每当用户在GridView选中一项,ActivityGroup就把该项对应的Activity的Window作为View添加到...

    基于GridView和ActivityGroup实现的TAB分页

    TabHost是Android系统提供的一个容器,用来管理Tab和与之关联的Activity或Fragment。TabWidget是TabHost的一部分,用于显示Tab的UI元素。在传统的Tab分页实现中,通常会将TabHost和TabWidget放入一个帧布局...

    ActivityGroup + GridView + ViewFlipper 实现选项卡.zip

    `ActivityGroup`继承自`TabActivity`,并提供了`LocalActivityManager`来管理和控制子`Activity`。然而,`ActivityGroup`在API Level 13已经被弃用,现在推荐使用`Fragment`或者`FragmentTabHost`来替代,因为`...

    Android入门之ActivityGroup+GridView实现Tab分页标签的方法

    读者也许会马上想到使用TabHost 与 TabActivity的组合,其实最常用的不是它们,而是由GridView与ActivityGroup的组合。每当用户在GridView选中一项,ActivityGroup就把该项对应的Activity的Window作为View添加到...

    Android TabHost内嵌ActivityGroup界面管理

    其中也包括了TabActivity去实现的,TabActivity 里面每个选项卡里面会有个默认的界面,但是当你的应用这个模块里面不止是一个界面,并且第二个界面里面,还需要你去显示下面的选项卡,很多人都会用到ActivityGroup,...

    自定义Tabctivity

    10. **测试与调试**: 对于自定义的`TabActivity`,测试非常重要,包括各个`Tab`间的切换逻辑、数据同步、内存泄漏等问题都需要进行详尽的检查。 在提供的`tab_demo`项目中,可能包含了上述知识点的实现示例,开发者...

Global site tag (gtag.js) - Google Analytics