Intent的基本属性
一个Intent对象包含了一组信息:
Component name 组件名称:
intent会根据component name要启动哪一个组件Activity、Service、ContentProvider
Action: ACTION_CALL、ACTION_EDIT 指定另外一个Activity要做些什么
Data:
从一个Activity向另一个Activity传送怎样的数据
Extras额外的:事先向一个activity的intent中存入的键值对
Flag:
Category:
注意:Activity之间通过intent传递数据不一定要求是在同一个应用中
Action属性:是指Intent要完成的动作,是一个字符串常量。在Intent类里面定义了大量的Action常量属性。如:ACTION_CALL打电话、ACTION_EDIT编辑数据、ACTION_BATTERY_LOW电量低广播等
Category属性:是一个执行Action的附加信息
CATEGORY_LAUNCHER意味着在加载程序时,
Activity出现在最上面。CATEGORY_HOME则表示回到Home界面
Extras属性是添加一些组件的附加信息
intent.putExtra(key,value)
getIntent()、intent.getStringExtra(key)
Intent寻找组件的方法
Intent在寻找目标组件时有两种方法:
通过组件名称直接指定:
通过Intent Filter过滤指定
当Intent要求做某些事情时,IntentFilter被用来描述这个activity能够做些什么事情
Intent最常使用的方法是用来启动一个Activity
// 生成一个Intent对象
Intent intent = new Intent();
// 在Intent对象当中添加一个键值对,实现两个Activity之间数据的传送。
intent.putExtra("testIntent", "123");
//
设置Intent对象要启动的Activity
intent.setClass(MainActivity.this, OtherActivity.class);
// 通过Intent对象启动另外一个Activity,这两个Activity不一定要同一个应用程序
MainActivity.this.startActivity(intent);
Bundle对象
发送数据的Activity
接收数据的Activity
Bundle针对不同的数据类型提供了
存入数据putXxx方法(key,value)
若要取出数据,则使用getXxx方法(key)
除了简单传递类型之外,也可以封装String[]与ArrayList<String>的方式
// 实例化一个Intent对象,并指定class
Intent intent = new Intent();
intent.setClass(DateTransferActivity.this, ShowInfoActivity.class);
// 实例化Bundle,并将要传递的数据传入
Bundle bundle = new Bundle();
bundle.putDouble("height", height);
bundle.putString("sex", sex);
// 将Bundle对象分配给Intent对象
intent.putExtras(bundle);
// 调用另一个Activity
startActivity(intent);
//取得Intent对象中的Bundle对象
Bundle bundle = this.getIntent().getExtras();
//取得Bundle中的数据
String sex = bundle.getString("sex");
double height = bundle.getDouble("height");
activity 返回值
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//处理按钮事件
this.findViewById(R.id.btn).setOnClickListener(listener);
}
private View.OnClickListener listener=new View.OnClickListener() {
@Override
public void onClick(View v) {
//意图对象
Intent intent=new Intent();
//上下文对象,加载窗体类字解码
intent.setClass(MainActivity.this, Main2Activity.class);
//传String
intent.putExtra("name", "zs");
startActivityForResult(intent,1);
//传对象
// Bundle bundle=new Bundle();
// bundle.putBundle("a",);
};
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//获取当前返回值
if(resultCode==1){
Bundle i= data.getExtras();
Toast.makeText(this, i.getString("name"),Toast.LENGTH_LONG).show();
}
}
}
public class Main2Activity extends ActionBarActivity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
Toast.makeText(this, "我来了", Toast.LENGTH_SHORT).show();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView tv=(TextView) this.findViewById(R.id.textView);
tv.setText(this.getIntent().getStringExtra("name"));
btn=(Button) this.findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent backIntent=new Intent();
backIntent.putExtra("name","ls");
//当前窗体关闭返回值
setResult(1,backIntent);
//结束当前窗体
finish();
}
});
}
}
一个Intent对象包含了一组信息:
Component name 组件名称:
intent会根据component name要启动哪一个组件Activity、Service、ContentProvider
Action: ACTION_CALL、ACTION_EDIT 指定另外一个Activity要做些什么
Data:
从一个Activity向另一个Activity传送怎样的数据
Extras额外的:事先向一个activity的intent中存入的键值对
Flag:
Category:
注意:Activity之间通过intent传递数据不一定要求是在同一个应用中
Action属性:是指Intent要完成的动作,是一个字符串常量。在Intent类里面定义了大量的Action常量属性。如:ACTION_CALL打电话、ACTION_EDIT编辑数据、ACTION_BATTERY_LOW电量低广播等
Category属性:是一个执行Action的附加信息
CATEGORY_LAUNCHER意味着在加载程序时,
Activity出现在最上面。CATEGORY_HOME则表示回到Home界面
Extras属性是添加一些组件的附加信息
intent.putExtra(key,value)
getIntent()、intent.getStringExtra(key)
Intent寻找组件的方法
Intent在寻找目标组件时有两种方法:
通过组件名称直接指定:
通过Intent Filter过滤指定
当Intent要求做某些事情时,IntentFilter被用来描述这个activity能够做些什么事情
Intent最常使用的方法是用来启动一个Activity
// 生成一个Intent对象
Intent intent = new Intent();
// 在Intent对象当中添加一个键值对,实现两个Activity之间数据的传送。
intent.putExtra("testIntent", "123");
//
设置Intent对象要启动的Activity
intent.setClass(MainActivity.this, OtherActivity.class);
// 通过Intent对象启动另外一个Activity,这两个Activity不一定要同一个应用程序
MainActivity.this.startActivity(intent);
Bundle对象
发送数据的Activity
接收数据的Activity
Bundle针对不同的数据类型提供了
存入数据putXxx方法(key,value)
若要取出数据,则使用getXxx方法(key)
除了简单传递类型之外,也可以封装String[]与ArrayList<String>的方式
// 实例化一个Intent对象,并指定class
Intent intent = new Intent();
intent.setClass(DateTransferActivity.this, ShowInfoActivity.class);
// 实例化Bundle,并将要传递的数据传入
Bundle bundle = new Bundle();
bundle.putDouble("height", height);
bundle.putString("sex", sex);
// 将Bundle对象分配给Intent对象
intent.putExtras(bundle);
// 调用另一个Activity
startActivity(intent);
//取得Intent对象中的Bundle对象
Bundle bundle = this.getIntent().getExtras();
//取得Bundle中的数据
String sex = bundle.getString("sex");
double height = bundle.getDouble("height");
activity 返回值
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//处理按钮事件
this.findViewById(R.id.btn).setOnClickListener(listener);
}
private View.OnClickListener listener=new View.OnClickListener() {
@Override
public void onClick(View v) {
//意图对象
Intent intent=new Intent();
//上下文对象,加载窗体类字解码
intent.setClass(MainActivity.this, Main2Activity.class);
//传String
intent.putExtra("name", "zs");
startActivityForResult(intent,1);
//传对象
// Bundle bundle=new Bundle();
// bundle.putBundle("a",);
};
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//获取当前返回值
if(resultCode==1){
Bundle i= data.getExtras();
Toast.makeText(this, i.getString("name"),Toast.LENGTH_LONG).show();
}
}
}
public class Main2Activity extends ActionBarActivity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
Toast.makeText(this, "我来了", Toast.LENGTH_SHORT).show();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView tv=(TextView) this.findViewById(R.id.textView);
tv.setText(this.getIntent().getStringExtra("name"));
btn=(Button) this.findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent backIntent=new Intent();
backIntent.putExtra("name","ls");
//当前窗体关闭返回值
setResult(1,backIntent);
//结束当前窗体
finish();
}
});
}
}