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

作者:netcon 时间:2022-05-28 03:37:29 

前言

安卓开发中一个很基础的操作就是打开一个 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开发者们能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

来源:http://conw.net/archives/44/

标签:android,startactivityresult
0
投稿

猜你喜欢

  • 举例讲解Java中synchronized关键字的用法

    2023-07-01 22:20:19
  • 解决fastjson泛型转换报错的解决方法

    2023-04-02 03:10:44
  • C# Bitmap 复制的小例子

    2023-01-19 12:49:39
  • 新手必看Unity2019 2020保姆级安装教程

    2023-08-23 07:13:37
  • Spring实例化bean的方式代码详解

    2022-04-04 08:46:09
  • Java实现月饼的制作、下单和售卖功能

    2023-03-06 18:26:24
  • JavaWeb详细讲述Cookie和Session的概念

    2022-03-23 08:39:44
  • java实现gif动画效果(java显示动态图片)

    2023-10-19 07:56:38
  • Spring Boot整合ElasticSearch实现多版本兼容的方法详解

    2021-09-20 18:06:22
  • j2ee之AJAX二级联动效果

    2021-09-13 10:06:58
  • Flutter开发中的路由参数处理

    2023-06-21 04:27:48
  • C#面向对象设计原则之接口隔离原则

    2022-07-22 21:02:58
  • 如何在Unity中检测死循环和卡死

    2023-12-18 00:55:17
  • Java URL自定义私有网络协议

    2021-08-11 02:21:06
  • Java文件断点续传实现原理解析

    2022-08-21 02:05:39
  • Springboot整合pagehelper分页功能

    2021-12-14 15:53:48
  • Java中常见的查找算法与排序算法总结

    2021-07-14 13:21:23
  • 深入Android MediaPlayer的使用方法详解

    2023-07-21 21:50:47
  • Java实现双色球抽奖随机算法示例

    2023-04-25 12:15:38
  • Java多线程之ThreadLocal浅析

    2023-06-19 19:55:37
  • asp之家 软件编程 m.aspxhome.com