Android Activity学习 <二> Activity间通讯
来源:互联网 发布:840Mgpu安装tensorflow 编辑:程序博客网 时间:2024/06/01 19:56
1. Intent在Activity间通讯的使用:
1.1: 使用Intent启动其它Activity:
Activity可以调用void startActivity (Intentintent)方法来启动其它Activity。不论此Activity在同一个进程内,还是在不同进程。
在同一进程内,可以使用显式Intent。 不同进程中,则使用隐式Intent.
我们统一按照不同进程内的方式启动其它Activity:
例1:
Sam有个测试程序,其APK为:HelloJni.apk。其安装在Android系统之后,其APK存放在。
/data/app/com.example.hellojni-1.apk
现在,我要使用Intent来启动此APK安装后的应用程序的Activity。
startActivity(i);
则其它进程的Activity被启动起来。
1.2:使用 Intent启动其它Activity时传递信息:
Intent有一个传递数据的机制。
Intent putExtra()发送,getXXXExtra系列函数接收。
其中,putExtra()参数一为关键字。getXXXExtra() 则通过此关键字得到其值。
可以传送的信息很多:如bool,String,int,char,float....
例2:
HelloJni.apk。其安装在Android系统之后,其APK存放在。启动之,并传递一个bool,两个String。
startActivity(i);
此时,在被启动的Activity的onCreate中。添加如下:
1.1: 使用Intent启动其它Activity:
Activity可以调用
在同一进程内,可以使用显式Intent。 不同进程中,则使用隐式Intent.
我们统一按照不同进程内的方式启动其它Activity:
例1:
Sam有个测试程序,其APK为:HelloJni.apk。其安装在Android系统之后,其APK存放在。
/data/app/com.example.hellojni-1.apk
现在,我要使用Intent来启动此APK安装后的应用程序的Activity。
Intent i = new Intent();
PackageManager pm = getPackageManager(); //得到PackageManager
//通过PackageManager得到指定APK文件的信息,注意 GET_ACTIVITIES,是指填充Info.activites[]
//通过PackageManager得到指定APK文件的信息,注意
PackageInfo Info =pm.getPackageArchiveInfo("/data/app/com.example.hellojni-1.apk" ,PackageManager.GET_ACTIVITIES);
//Info.packageName: 包名。 Info.activities[0].name:第一个Activity的类名。
//Info.packageName: 包名。
Log.w("3DiJoy", String.format("PackageName:[%s]. Version:[%s].class name:[%s]", Info.packageName, Info.versionName,Info.activities[0].name));
//
//
ComponentName comp = newComponentName(Info.packageName,Info.activities[0].name);
i.setComponent(comp);
startActivity(i);
则其它进程的Activity被启动起来。
1.2:使用 Intent启动其它Activity时传递信息:
Intent有一个传递数据的机制。
Intent putExtra()发送,getXXXExtra系列函数接收。
其中,putExtra()参数一为关键字。getXXXExtra() 则通过此关键字得到其值。
可以传送的信息很多:如bool,String,int,char,float....
例2:
HelloJni.apk。其安装在Android系统之后,其APK存放在。启动之,并传递一个bool,两个String。
Intent i = new Intent();
PackageManager pm =getPackageManager(); //得到PackageManager
//通过PackageManager得到指定APK文件的信息,注意 GET_ACTIVITIES,是指填充Info.activites[]
//通过PackageManager得到指定APK文件的信息,注意
PackageInfo Info =pm.getPackageArchiveInfo("/data/app/com.example.hellojni-1.apk" ,PackageManager.GET_ACTIVITIES);
//Info.packageName: 包名。 Info.activities[0].name:第一个Activity的类名。
//Info.packageName: 包名。
Log.w("3DiJoy",String.format("PackageName:[%s]. Version:[%s]. class name:[%s]",Info.packageName, Info.versionName,Info.activities[0].name));
//
//
ComponentName comp = newComponentName(Info.packageName,Info.activities[0].name);
i.setComponent(comp);
i.putExtra("Bool_Key", true);
i.putExtra("String_Key1", "ABC");
i.putExtra("String_Key2", "EFB");
startActivity(i);
此时,在被启动的Activity的onCreate中。添加如下:
Intent intent=getIntent();
intent.getBooleanExtra("Bool_Key",false);
String S2 =intent.getStringExtra("String_Key2");
String S1 = intent.getStringExtra("String_Key1");
Log.w("3DiJoy", "String1:" + S1);
Log.w("3DiJoy", "String2:" + S2);
通过logcat发现信息被正确传递。
1.3:使用Intent启动其它Activity时利用bundle传递信息:
发送端:
startActivity(i);
接收端:
Intent intent= getIntent();
Log.w("3DiJoy", "No Found bundle"); bundle.getBoolean("bool_Key"); String s1 =bundle.getString("String_key1"); Log.w("3DiJoy", "###############String1:" +s1);
通过logcat发现信息被正确传递。
1.3:
发送端:
Intent i = new Intent();
Bundle bundle = new Bundle();
PackageManager pm =getPackageManager(); //得到PackageManager
//通过PackageManager得到指定APK文件的信息,注意 GET_ACTIVITIES,是指填充Info.activites[]
//通过PackageManager得到指定APK文件的信息,注意
PackageInfo Info =pm.getPackageArchiveInfo("/data/app/com.example.hellojni-1.apk" ,PackageManager.GET_ACTIVITIES);
//Info.packageName: 包名。 Info.activities[0].name:第一个Activity的类名。
//Info.packageName: 包名。
Log.w("3DiJoy",String.format("PackageName:[%s]. Version:[%s]. class name:[%s]",Info.packageName, Info.versionName,Info.activities[0].name));
//
//
ComponentName comp = newComponentName(Info.packageName,Info.activities[0].name);
i.setComponent(comp);
bundle.putBoolean("bool_Key", true);
bundle.putString("String_key1", "Sam Info: ");
i.putExtra("Sam_Key", bundle); //Bundle名为:Sam_Key。接收端要使用
startActivity(i);
接收端:
Intent intent= getIntent();
Bundle bundle = intent.getBundleExtra("Sam_Key");//通过Bundle名寻找
if(bundle == null)
else
{
}
1.4:使用Intent启动其它Activity时传递信息,并在其它Activity退出时得到返回值:
发送端使用:
startActivityForResult(i, 4);
也就是说:Request Code为4。
并使用onActivityResult() 接收子Activity返回时的值。
1.5:使用Intent启动其它Activity时传递信息,并在其它Activity退出时得到返回信息:
发送端使用:
startActivityForResult(i,4);
也就是说:RequestCode为4。
并使用onActivityResult()接收子Activity返回时的值。
1.4:
发送端使用:
startActivityForResult(i, 4);
也就是说:Request Code为4。
并使用onActivityResult() 接收子Activity返回时的值。
@Override
protected void onActivityResult(int requestCode, intresultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Log.w("3DiJoy", String.format("RequestCode:[%d].Get Recode :[%d]", requestCode, resultCode));
}
子Activity中添加:
setResult(RESULT_FIRST_USER);
则在父Activity中,可以得到此值。
子Activity中添加:
setResult(RESULT_FIRST_USER);
则在父Activity中,可以得到此值。
1.5:
startActivityForResult(i,4);
也就是说:RequestCode为4。
并使用onActivityResult()接收子Activity返回时的值。
@Override
protected void onActivityResult(intrequestCode, int resultCode, Intent data) {
// TODO Auto-generated methodstub
super.onActivityResult(requestCode, resultCode, data);
data.getBooleanExtra("Bool_Key", false);
String S2 =data.getStringExtra("String_Key2");
String S1 = data.getStringExtra("String_Key1");
Log.w("3DiJoy", "String1:" + S1);
Log.w("3DiJoy", "String2:" + S2);
Log.w("3DiJoy",String.format("RequestCode:[%d].Get Recode : [%d]", requestCode,resultCode));
}
0 0
- Android Activity学习 <二> Activity间通讯
- Android学习笔记二:Activity
- android学习二(Activity)
- Android开发笔记 Activity间的通讯
- android服务与activity通讯
- Android Fragment与Activity通讯
- Android学习二之Activity(一)
- Android学习笔记:<二>01.Activity初步
- android基础学习<二>--->Activity的来龙去脉
- android学习篇章二activity生命周期
- Android 四大组件学习之Activity二
- Android学习笔记(二)---Activity
- android基础学习之activity(二)
- Android Activity 二
- Android Activity(二)
- Android开发-Activity(二)
- android复习(二) Activity
- Android Activity生命周期(二)
- 项目经理之项目经理的基本特征
- C++调试时的错误例子及解决方法
- 103.Daikon Forge高级控件checkbox、dropdownlist、listbox、progressbar
- 1001. A+B Format
- javadoc: error - java.lang.reflect.InvocationTarget Exception java.lang.NullPointerException
- Android Activity学习 <二> Activity间通讯
- 移动智能终端可信环境分析
- CorData的基本使用
- Mybatis 批量插入的方法
- JavaScript函数的常见几种写法
- Referenced file contains errors (file:/D:/Users/Administrator/AppData/Local/
- 项目经理之什么是项目管理
- 动态规划(一)
- 集合框架