Android基础之startActivityForResult()的用法详解
前言
安卓开发中一个很基础的操作就是打开一个 activity ,另一个很必要的操作就是,打开一个 activity ,在打开的 activity 中操作之后并获得返回结果。
两个 activity
为了演示这个操作,我们需要两个 activity : mainactivity 和 otheractivity ,在 mainactivity 中通过 intent 启动 otheractivity ,并获得 otheractivity 结束后返回的结果,例子仅作演示,为了方便,我直接在 java 文件中定义了控件,就不写布局文件了。
mainactivity.java
package net.conw.intenttest; import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.linearlayout; public class mainactivity extends activity implements view.onclicklistener { private edittext edittext; private button button; public static int request_code = 1; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); linearlayout layout = new linearlayout(this); edittext = new edittext(this); button = new button(this); button.settext("main"); button.setonclicklistener(this); layout.addview(edittext); layout.addview(button); setcontentview(layout); } @override public void onclick(view v) { intent intent = new intent(this, otheractivity.class); intent.putextra("text", edittext.gettext().tostring()); startactivityforresult(intent, request_code); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); if(requestcode == request_code && resultcode == otheractivity.result_code) { edittext.settext(data.getstringextra("text")); } } }
otheractivity.java
package net.conw.intenttest; import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.linearlayout; public class otheractivity extends activity implements view.onclicklistener { private edittext edittext; private button button; public static int result_code = 1; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); linearlayout layout = new linearlayout(this); edittext = new edittext(this); button = new button(this); button.settext("other"); button.setonclicklistener(this); layout.addview(edittext); layout.addview(button); setcontentview(layout); edittext.settext(getintent().getstringextra("text")); } @override public void onclick(view v) { intent intent = new intent(); intent.putextra("text", edittext.gettext().tostring()); setresult(result_code, intent); finish(); } }
整个代码的执行逻辑如下:
1、两个 activity 的代码就是这样的, 当 mainactivity 中的 button 被触发 onclick()
事件后,把 mainactivity 中的 edittext 的内容发给了 otheractivity 。
2、otheractivity 打开并初始化好控件后,把 edittext 的内容设置为 mainactivity 发过来的内容。
3、当 otheractivity 中的 button 被触发 onclick()
事件后,把 otheractivity 中的 edittext 的内容返回给 mainactivity。
4、当返回到 mainactivity 时,会执行 ononactivityresult()
方法的内容,判断如果 requestcode 和 resultcode 无误后,把 mainactivity 中的 edittext 的内容改为 otheractivity 返回的结果。(这里判断了 requestcode 和 resultcode ,所以 otheractivity 通过 back 键返回时, mainactivity 的内容不会改变)
所以结果就是,通过这样的方式打开这两个activity,他们中的 edittext 的内容是同步的,一个 activity 改变了,到另一个 activity 中也会跟着改变。
总结
好了,以上就是关于android中startactivityforresult() 的全部内容了,希望本文的内容对各位android开发者们能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对的支持。
推荐阅读
-
Android基础之startActivityForResult()的用法详解
-
实例详解Android Selector和Shape的用法
-
PHP基础温习之echo print printf sprintf print_r var_dump的用法与区别,print_rvar_dump
-
Android开发之Animations动画用法实例详解
-
Android持久化技术之文件的读取与写入实例详解
-
IOS Swift基础之switch用法详解
-
Android基础之startActivityForResult()的用法详解
-
Android开发之浏览器用法实例详解(调用uc,opera,qq浏览器访问网页)
-
IOS Swift基础之switch用法详解
-
Android开发笔记之:用Enum(枚举类型)取代整数集的应用详解