安卓基础之Intent的用法

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要实现的代码:

  1. 采用startActivityForRequest()方法而不是startActivity()

    Intent intent=new Intent(this,TestActivity.class);
    
    //设置请求码,startActivityForResult(Intent intent,int requestcode)
    startActivityForResult(intent,1);    
    
  2. 重写方法onActivityResult()

    //该方法在我们开启的Activity关闭时调用
    protected void onActivityResult(int requestCode,int resultCode,Intent data){
    if(resultCode==10){                          //通过请求码或者结果码,可以辨别返回数据的来源
    String phone=data.getStringExtra("phone");
    }
    }

猜你喜欢

转载自www.cnblogs.com/adressian/p/9949969.html