安卓基础之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要实现的代码:
-
采用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"); } }
上一篇: jquery 根据自定义属性选择
下一篇: 预防肝病应该怎么做