Android基础之startActivityForResult()的用法详解

Android基础之startActivityForResult()的用法详解,第1张

概述前言安卓开发中一个很基础的 *** 作就是打开一个Activity,另一个很必要的 *** 作就是,打开一个Activity,在打开的Activity中 *** 作之后并获得返回结果。

前言

安卓开发中一个很基础的 *** 作就是打开一个 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基础之startActivityForResult()的用法详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1147167.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存