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

 更新时间:2017年01月21日 10:09:48   作者:netcon  
这篇文章主要给大家介绍了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实现下载zip压缩文件并解压的方法(附源码)

    Android实现下载zip压缩文件并解压的方法(附源码)

    这篇文章主要给大家介绍了利用Android实现下载zip压缩文件并解压的方法,文中给出了示例代码并提供了源码下载,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • 详解SwipeListView框架实现微信\QQ滑动删除效果

    详解SwipeListView框架实现微信\QQ滑动删除效果

    这篇文章主要为大家详细介绍了SwipeListView框架实现微信\QQ滑动删除效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android 校验email是否合法实现代码

    Android 校验email是否合法实现代码

    这篇文章主要介绍了Android 校验email是否合法实现代码的相关资料,需要的朋友可以参考下
    2017-01-01
  • 详解Android v1、v2、v3签名(小结)

    详解Android v1、v2、v3签名(小结)

    这篇文章主要介绍了详解Android v1、v2、v3签名(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Android自定义ViewPager指示器

    Android自定义ViewPager指示器

    这篇文章主要为大家详细介绍了Android自定义ViewPager指示器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android中使用itemdecoration实现时间线效果

    Android中使用itemdecoration实现时间线效果

    这篇文章主要介绍了Android中使用itemdecoration实现时间线效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Android   Data Binding 在 library module 中遇到错误及解决办法

    Android   Data Binding 在 libra

    这篇文章主要介绍了Android   Data Binding 在 library module 中遇到错误及解决办法的相关资料,需要的朋友可以参考下
    2017-03-03
  • Android自定义相机实现定时拍照功能

    Android自定义相机实现定时拍照功能

    这篇文章主要为大家详细介绍了Android自定义相机实现定时拍照功能的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Android startActivityForResult实例详解

    Android startActivityForResult实例详解

    这篇文章主要介绍了Android startActivityForResult实例详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • Android WebView软键盘遮挡输入框方案详解

    Android WebView软键盘遮挡输入框方案详解

    这篇文章主要介绍了Android WebView软键盘遮挡输入框方案详解,本文提供了一种新的解决 WebView 输入框被软键盘遮挡的思路,不过这种思路也有它的局限性,目前来看仅适用于全屏的 WebView 中,需要的朋友可以参考下
    2022-06-06

最新评论