- 浏览: 82047 次
- 性别:
- 来自: 北京
最新评论
-
sunsenzhen:
线程用过不释放吗?
android多线程开发 -
grandkingwang:
...
android 文件上传(模拟表单提交) -
fategaga:
这是多线程么?
android多线程开发 -
zymsuper:
xmpp 的连接方式是 长连接吗?如果是,那和你之前写的第三种 ...
android实现推送实践 -
hyee:
哥们,你那个存储过程是基于哪个数据库的,据我所知Oracle的 ...
连载三:模拟JavaEye论坛首页存储过程
首先定义一个主布局文件
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); } }
发表评论
-
android 跨进程访问service方法
2012-11-12 19:31 22471.Intent 启动service Activity方法集合 ... -
android画图-解锁界面
2012-11-13 22:43 2289锁屏 Launcher 输入法 应用程序开发 ... -
查询应用使用次数
2012-11-13 22:43 1986http://www.eoeandroid.com/fo ... -
分析Http请求头获取爱帮公交数据
2012-10-20 20:43 2753爱帮公交公布了自己的openAPI,但是之前自己不知道,就通 ... -
android 文件上传(模拟表单提交)
2012-10-15 22:52 15349package irdc.ex08_11; imp ... -
framework新增native方法,aidl,新类,新模块
2012-09-18 16:30 5073如何向android的framework里添加新类 goog ... -
android开机启动流程说明
2012-09-12 14:08 1526第一步:启动linux 1.Bootloader ... -
android多线程开发
2012-08-31 12:22 74941.onResume()完全执行结束了(没有阻塞)的时候才会 ... -
FM 代码详解非原生
2012-09-21 23:40 3163FM点击关机按钮的时候: FMplay.java : ... -
Spreadtrum_Android_8805和8810环境搭建和源码编译V1.0.1_Word文档
2012-08-25 10:01 1686目 录 附录A 修改 ... -
adb问题汇总
2012-07-26 09:50 8148adb shell ps |grep "music| ... -
android Socket编程
2012-03-02 00:13 1151server: import java.net.*; ... -
android实现推送实践
2012-02-04 12:23 2142首先感谢 Android推送通 ... -
第一个iphone应用程序
2011-08-04 16:03 1113暑期实习已经 ... -
android http通信(二) 英译汉字典实例探究网络通信三种方法
2011-06-07 09:12 1466方法一:HttpURLConnection Stri ... -
android http通信(一) HttpURLConntection
2011-06-05 18:32 1191举例:从网络上下载图片 String urlpath=&qu ...
相关推荐
ActivityGroup 代替 TabActivity 的用法 Android 开发中,TabActivity 已经被废除,而使用 ActivityGroup 来代替 TabActivity,可以更加自由灵活,少很多限制和依赖。ActivityGroup 是 Google 提供的一个非常优秀的...
每个标签需要指定一个TabSpec,它包含了标签的显示文本、图标以及与之关联的Intent。 4. 设置内容:每个TabSpec需要关联一个Intent,这个Intent可以启动一个新的Activity或Fragment,以展示标签页的内容。 接下来,...
在Android中,TabHost通常与TabWidget(显示选项卡)和FrameLayout(显示内容)一起使用。TabHost的工作流程是:当用户点击选项卡时,它会根据预先配置的信息加载相应的Activity或Fragment。 然后,我们来看...
`ActivityGroup`是`TabActivity`的一种替代方案,它允许我们在一个父`Activity`中嵌套多个子`Activity`,并在需要时动态替换内容。 首先,我们需要了解`ActivityGroup`的核心概念。`ActivityGroup`是`Sherlock`库中...
其中也包括了TabActivity去实现的,TabActivity 里面每个选项卡里面会有个默认的界面,但是当你的应用这个模块里面不止是一个界面,并且第二个界面里面,还需要你去显示下面的选项卡,很多人都会用到ActivityGroup,...
在Android开发中,TabActivity是早期用来实现底部标签栏切换页面的一种方式,它结合了TabHost和ActivityGroup来实现多页面间的切换。然而,随着Android版本的更新,TabActivity已经逐渐被Fragment和ViewPager等组件...
这篇笔记主要探讨了`TabActivity`的使用方法及其背后的原理,同时也涉及到了一些与之相关的工具和源码分析。 首先,`TabActivity`是Android SDK中的一个类,它继承自`ActivityGroup`,在API level 13被标记为过时,...
与传统的TabActivity不同,每个Tab不再仅仅绑定一个Activity,而是可以绑定一系列的Activity,这样用户在同一个Tab内就能体验到多级菜单或丰富的功能模块。 在ActivityGroup中,主要通过自定义的...
在描述中提到的博客文章中,开发者可能详细介绍了如何将`TabActivity`与`ActivityGroup`结合,以实现在顶部和底部都有Tab的效果。`ActivityGroup`是一个旧的类,用于管理在一个`LocalActivityManager`中的子Activity...
7. **TabHost与TabActivity**:在旧版本的Android中,TabHost和TabActivity通常用于实现标签页切换。然而,由于Fragment的出现,现在推荐使用FragmentTabHost和FragmentTransaction来实现相同的功能,这种方式更符合...
`TabActivity`是Android 2.x版本中的一部分,它基于`ActivityGroup`,允许在一个`Activity`中嵌套多个子`Activity`,每个子`Activity`对应一个标签页。这种方式现在看来并不推荐,因为它带来了复杂的生命周期管理...
`ActivityGroup`是`TabActivity`的一个子类,它允许开发者在单一的Tab或窗口内嵌套多个Activity,提供了一种在不创建新窗口的情况下展示多个界面的方式。这个"ActivityGroup Demo"是为了帮助开发者理解和学习如何...
ActivityGroup是在Android早期版本中,为了在TabHost或者TabActivity中实现嵌套Activity而设计的一种特殊类型的Activity。它允许在一个Activity内部启动其他Activity,形成一个嵌套的Activity结构。然而,随着...
读者也许会马上想到使用TabHost 与 TabActivity的组合,其实最常用的不是它们,而是由GridView与ActivityGroup的组合。每当用户在GridView选中一项,ActivityGroup就把该项对应的Activity的Window作为View添加到...
TabHost是Android系统提供的一个容器,用来管理Tab和与之关联的Activity或Fragment。TabWidget是TabHost的一部分,用于显示Tab的UI元素。在传统的Tab分页实现中,通常会将TabHost和TabWidget放入一个帧布局...
`ActivityGroup`继承自`TabActivity`,并提供了`LocalActivityManager`来管理和控制子`Activity`。然而,`ActivityGroup`在API Level 13已经被弃用,现在推荐使用`Fragment`或者`FragmentTabHost`来替代,因为`...
读者也许会马上想到使用TabHost 与 TabActivity的组合,其实最常用的不是它们,而是由GridView与ActivityGroup的组合。每当用户在GridView选中一项,ActivityGroup就把该项对应的Activity的Window作为View添加到...
其中也包括了TabActivity去实现的,TabActivity 里面每个选项卡里面会有个默认的界面,但是当你的应用这个模块里面不止是一个界面,并且第二个界面里面,还需要你去显示下面的选项卡,很多人都会用到ActivityGroup,...
10. **测试与调试**: 对于自定义的`TabActivity`,测试非常重要,包括各个`Tab`间的切换逻辑、数据同步、内存泄漏等问题都需要进行详尽的检查。 在提供的`tab_demo`项目中,可能包含了上述知识点的实现示例,开发者...