隐式意图:通过指定一组数据或者动作实现
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"); } }
如对本文有疑问, 点击进行留言回复!!
Android 在线查看、修改 Settings 等值的方法
一次Pandas踩坑记录(为什么Dataframe创建时指定的列名和列不对应)
Android 中 setText(“android“) 怎样调用invalidate()重新绘制界面?
网友评论