您的位置:首页 > 其它

activity间的传参

2013-07-01 15:33 89 查看
Intent有两个作用:激活组件和附带数据

激活另一个activity的方法
显示意图:
1. Intent intent = new Intent();
intent.setClass(this, OtherActivity.class);//设置要激活的组件
startActivity(intent);

2. Intent intent = new Intent();
intent.setClassName(this, "com.example.activity.OtherActivity");//通过反射机制直接得到,包+activity.
startActivity(intent);

3. Intent intent = new Intent();
intent.setComponent(new ComponentName(this, OtherActivity.class)); //设置组件
startActivity(intent);

4.Intent intent = new Intent(this,OtherActivity.class);
startActivity(intent);

5. /**
* 跨应用激活activity,其他应用的包,包加应用的全称,需要其他应用给出权限
* intent.setClassName("com.example.activity", "com.example.activity.OtherActivity");
*/
如果不是action.Main,则需要主动申明Android:exported="true",允许外部访问

附带数据
在mainActivity中
1. Intent intent = new Intent();
intent.setClass(this, OtherActivity.class);

intent.putExtra("name", "姓名");
intent.putExtra("age",5);
startActivity(intent);
在otherActivity中 提取数据
Intent intent = getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 0);//0是缺省值

2.bundle对象存放数据
Intent intent = new Intent();
intent.setClass(this, OtherActivity.class);
// 批量添加
Bundle budle = new Bundle();
budle.putString("name", "姓名");
budle.putInt("age", 5);
intent.putExtras(budle);
startActivity(intent);
otherActivity不用改,也可以采用另一种做法
Bundle bundle = intent.getExtras();
String name=bundle.getString("name");
int age =bundle.getInt("age");

需要otherActivity返回结果给Mainactivity
这种需求需要我们改变打开的方式

把startActivity(intent)改成
startActivityForResult(intent, 200);//200是请求码,用于区分哪部分调用
再重写onActivityResult方法
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String result = data.getStringExtra("result");
Toast.makeText(getApplicationContext(),result, 1).show();
}

我们可以在关闭otherActivity时返回结果,也可以定义一个按钮关闭otherActivity返回参数
public void closeActiviity(){
Intent data = new Intent();
data.putExtra("result", "xxxdja");
setResult(30, data);//设置返回数据,30是返回码
this.finish();//关闭当前activity
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: