前言
安卓开发中一个很基础的操作就是打开一个 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开发者们能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
本文向大家介绍IOS Swift基础之switch用法详解,包括了IOS Swift基础之switch用法详解的使用技巧和注意事项,需要的朋友参考一下 IOS Swift基础之switch用法详解 概述 Swift中的switch语句与Java等语言中的switch有很大的相似点,但是也有不同的地方,并且更加灵活。 Swift中switch的case语句中不需要添加break Swift中需
本文向大家介绍Python基础之函数用法实例详解,包括了Python基础之函数用法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文以实例形式较为详细的讲述了Python函数的用法,对于初学Python的朋友有不错的借鉴价值。分享给大家供大家参考之用。具体分析如下: 通常来说,Python的函数是由一个新的语句编写,即def,def是可执行的语句--函数并不存在,直到Python运行了def后
本文向大家介绍Python基础之变量基本用法与进阶详解,包括了Python基础之变量基本用法与进阶详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python基础之变量基本用法与进阶。分享给大家供大家参考,具体如下: 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是
本文向大家介绍Python基础之函数基本用法与进阶详解,包括了Python基础之函数基本用法与进阶详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python基础之函数基本用法与进阶。分享给大家供大家参考,具体如下: 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式 无参数,
本文向大家介绍详解SpringBoot基础之banner玩法解析,包括了详解SpringBoot基础之banner玩法解析的使用技巧和注意事项,需要的朋友参考一下 SpringBoot项目启动时会在控制台打印一个默认的启动图案,这个图案就是我们要讲的banner。看似简单的banner,我们能够对它做些什么呢?本篇文章就带大家深入了解一下banner的使用(版本:SpringBoot2.1.4)。
本文向大家介绍详解Mysql基础语法的使用,包括了详解Mysql基础语法的使用的使用技巧和注意事项,需要的朋友参考一下 MYSQL介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Managem