Intent的两个作用:
Intent(意图)----->激活组件(Activity),附带数据(即是传参数)。
意图作用之一:激活组件Activity的几种方式:
1>
public void openActivity(View v) {
Intent intent = new Intent();
intent.setClass(this,OtherActivity.class);//设置要激活的组件,在此行中要激活的组件是OtherActivity
startActivity(intent);
}
2>
public void openActivity(View v) {
Intent intent = new Intent();
intent.setClassName(this,"cn.itcast.activitys.OtherActivity");//设置要激活的组件,字符串"cn.itcast.activitys.OtherActivity"cn.itcast.activitys是包名
startActivity(intent);
}
3>
public void openActivity(View v) {
Intent intent = new Intent();
intent.setCompoent(new CompoentName(this,OtherActivity.class));
startActivity(intent);
}
4>
public void openActivity(View v) {
Intent intent = new Intent(this,OtherActivity.class);
startActivity(intent);
}
5>
public void openActivity(View v) {
Intent intent = new Intent();
intent.setClassName("cn.itcast.activitys","cn.itcast.activitys.OtherActivity");//可以用作跨应用激活组件,即可以用作激活其他应用(前提是没有使 //用权限,如果添加了权限,则不能激活)的组件,此处是激活本应用的组件
startActivity(intent);
}
方法之一:
public void openActivity(View v) {
Intent intent = new Intent(this,OtherActivity.class);
intent.putExtra("company","传智播客");
intent.putExtra("age",5);
startActivity(intent);
}
在OtherActivity中接收参数
Intent intent = getIntent();//接收意图
String company = intent.getStringExtra("company");
int age = intent.getIntExtra("age",0);//如果参数值不存在,默认为0;
TextView textView = (TextView) this.findViewById(R.id.textview);
textView.setText("公司名:"+company+"年龄:"+age);
方法之二:
public void openActivity(View v) {
Intent intent = new Intent(this,OtherActivity.class);
//使用Bundle对象来存储数据
Bundle bundle = new Bundle();
bundle.putString("company","CSDN");
bundle.putInt("age",10);
//将数据批量添加进意图里面
intent.putExtras(bundle);
startActivity(intent);
}
在OtherActivity中接收参数方法之一:
Intent intent = getIntent();//接收意图
String company = intent.getStringExtra("company");
int age = intent.getIntExtra("age",0);//如果参数值不存在,默认为0;
TextView textView = (TextView) this.findViewById(R.id.textview);
textView.setText("公司名:"+company+"年龄:"+age);
在OtherActivity中接收参数方法之二:
Intent intent = getIntent();//接收意图
Bundle bundle = intent.getExtras();
String company = bundle.getString("company");
int age = bundle.getInt("age");
TextView textView = (TextView) this.findViewById(R.id.textview);
textView.setText("公司名:"+company+"年龄:"+age);
补充:
如果想在关闭OtherActivity时返回数据,则可以用以下方法:
public void openActivity(View v) {
Intent intent = new Intent(this,OtherActivity.class);
//使用Bundle对象来存储数据
Bundle bundle = new Bundle();
bundle.putString("company","CSDN");
bundle.putInt("age",10);
//将数据批量添加进意图里面
intent.putExtras(bundle);
startActivityForResult(intent,200);//设置请求码为200
}
@Override//此方法是由系统调用的,当点击关闭按钮时调用此方法,并且向此系统传参数。
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
String result = data.getStringExtra("result");
Toast.makeText(this.result,1).show();
}
在OtherActivity中;
Intent intent = getIntent();//接收意图
Bundle bundle = intent.getExtras();
String company = bundle.getString("company");
int age = bundle.getInt("age");
TextView textView = (TextView) this.findViewById(R.id.textview);
textView.setText("公司名:"+company+"年龄:"+age);
Intent data = new Intent();
data.putExtra("result","张小小和老方在小树林.............");
setResult(30,data);//设置返回码和返回数据;
this.finish();//关闭当前Activity;
}