初步探索及使用Intent
Intent的定义
Intent对象是component用来与操作系统通信的媒介工具,这里用于Activity之间的通信。
//一种简单的显示调用
xxxx.setOnClickListener(new View.OnClickListen(){
@Override
public void onClick(){
Intent i = new Intent(NowActivity.this, nextActivity.class)
//Intent的构造方法 public Intent(Context packageContext,Class<?> cls)
startActivity(i);
}
});
Activity间的数据传递
数据传递需要调用Intent.putExtra(...)方法。
- 举例一,使用Intent简单传递数据
public Intent putExtra(String name, boolean value)
参数一是固定为String类型的键,参数二可以是多种数据类型。并返回intent自身
public boolean getBooleanExtra(String name, boolean defaultValue)
参数一extra的名字,即键,参数二是指定默认值(默认结果),在无法取得有效键值的时候调用
//初始activity处代码
Intent i = new Intent(Context packageContext, nextActivity.class)
//一、新建一个Intent对象,并定好上下文
i.putExtra(String name, data);
//二、封装数据
startActivity(i);
//三、启动目标Activity
//被调用activity处代码,从extra中取数据
data = getIntent().getBooleanExtra(name, false);
//取值,Activity.getIntent()方法返回了有startActivity(Intent)方法转发的Intent对象
举例二,从子Activity获取返回结果
父activity代码
public void startActivityForResult(Intent intent, int requestCode);
参数一同前述的Intent,参数二是请求代码。请求代码是先发送给子activity,然后再返回给
父activity的用户定义整数值。当一个activity启动多个不同类型的子activity,且需要判断区
分消息回馈方时,通常会用到改请求代码。子activity代码
public final void setResult(int resultCode)
public final void setResult(int resultCode, Intent data)
其中的resultcode是结果代码,它指定为RESULT_OK或RESULT_CANCELED,当用户不掉用
setResult()方法是,系统默认发送结果代码”RESULT_CANCELED”,当让,我们要子Activity
返回数据,在此选择第二种方法。
//初始activity处代码
Intent i = new Intent(Context packageContext, nextActivity.class)
// startActivity(i); 其他同上,换一种启动方式
startActivityForResult(i, 0);
//子activity处代码
Intent result = new Intent();
//新建Intent对象
result.putExtra(String name, data);
setResult(RESULT_OK, result);
//调用setResult()方法
//父activity读取Extra
data = getIntent().getBooleanExtra(name, false);
小结
今天断断续续的学习,算是看懂了点Intent的运作。2017/3/12