Intent的用法
意图的分类和用法:
隐式意图:通过指定一组数据或者动作实现
Intent intent=new Intent();
intent.setAction("");
intent.addCatogary("");
intent.setDataAndType("",""); //或者intent.setData,具体根据清单文件配置
startActivity(intent);
显示意图:通过指定具体的activity实现
Intent intent=new Intent(this,TestActivity.class);
startActivity(intent);
意图的用途:
显示意图用于开启自己应用内的Activity.
隐式意图用于开启其他应用的Activity(主要是系统应用),相比显示意图安全性较差.
意图的实现:
通过Intent由MainActivity.class
跳转至TestActivity.class
:
MainActivity.class要实现代码:
Intent intent=new Intent(this,TestActivity.class); String name="eason"; Intent intent=new Intent(this,TestActivity.class); intent.putExtra("name",name); //Activity间数据传递的方法 startActivity(intent);
TestActivity.class要实现代码:
Intent intent=getIntent();
String name=intent.getStringExtra("name"); //传递的是什么数据类型,就按照传递的数据类型取
在以上的例子中,数据由MainActivity
传到了TestActivity.class
,那么如果想要把TestActivity.class
数据返回给MainActivity
要怎么做呢?
假如在TestActivity.class页面中点击按钮把选中号码返回,
那么TestActivity.class要实现代码:
public void onclick(View view){
Intent intent=new Intent();
String phone="123";
intent.putExtra("phone",phone);
setResult(10,intent); //调用父类的方法setRequest(int Resustcode,Intent),设置请求码
finish(); //该方法将结束当前Activity,返回唤醒该Activity的Activity
}
MainActivity.class要实现的代码:
-
采用startActivityForRequest()方法而不是startActivity()
Intent intent=new Intent(this,TestActivity.class); //设置请求码,startActivityForResult(Intent intent,int requestcode) startActivityForResult(intent,1);
-
重写方法onActivityResult()
//该方法在我们开启的Activity关闭时调用 protected void onActivityResult(int requestCode,int resultCode,Intent data){ if(resultCode==10){ //通过请求码或者结果码,可以辨别返回数据的来源 String phone=data.getStringExtra("phone"); } }