欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

安卓基础之Intent的用法

程序员文章站 2022-05-02 23:40:05
Intent的用法 意图的分类和用法: 隐式意图:通过指定一组数据或者动作实现 显示意图:通过指定具体的activity实现 意图的用途: 显示意图用于开启自己应用内的Activity. 隐式意图用于开启其他应用的Activity(主要是系统应用),相比显示意图安全性较差. 意图的实现: 通过Int ......

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");
    }
    }