基于startActivityForResult方法处理两个Activity之间数据传递问题

所属分类: 软件编程 / Android 阅读数: 822
收藏 0 赞 0 分享

废话不多说了,直接给大家贴代码了。

package com.example.testactivityresquest;
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.Toast;
 public class MainActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     Button btn = (Button) findViewById(R.id.button);
     btn.setOnClickListener(new OnClickListener() {
       @Override
       public void onClick(View v) {
 
         Intent intent = new Intent(MainActivity.this, Activityb.class);
         int[] nums = { , };
         intent.putExtra(Changliang.KEY, nums);
         //有别于startActivity,如果启动的其他Activity多了以后。相当于定一个特定KEY值,返回根据KEY值返回。
         startActivityForResult(intent, Changliang.requestCode);
 
       }
     });
   }
  //Activityb传回来的数据在这个方法中获取
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     int s = data.getIntExtra(Changliang.Activity_b_KEY, );
 
     Toast.makeText(getApplicationContext(), "传递两个数得到的和是:" + s, ).show();
 
   }
 }
 package com.example.testactivityresquest;
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.Toast;
 public class Activityb extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activityb);
     Intent intent = this.getIntent();
     int[] n = intent.getIntArrayExtra(Changliang.KEY);
     final int nums = n[] + n[];
     Toast.makeText(this, n[] + " " + n[], ).show();
     Button btn = (Button) findViewById(R.id.button);
     btn.setOnClickListener(new OnClickListener() {
       @Override
       public void onClick(View v) {
         Intent intent = new Intent(Activityb.this, MainActivity.class);
         intent.putExtra(Changliang.Activity_b_KEY, nums);
         // 将数据根据特定键值的意图事件导入
         Activityb.this.setResult(Changliang.requestCode, intent);
         //关闭后返回主Activity
         Activityb.this.finish();
       }
     });
   }
 }
package com.example.testactivityresquest;
public class Changliang {
public static final String KEY="key";
public static final String Activity_b_KEY="key1";
public static final int requestCode=1987;
}

xml文件

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="#ff" >
   <Button
     android:id="@+id/button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentTop="true"
     android:layout_centerHorizontal="true"
     android:layout_marginTop="dp"
     android:text="启动Activityb" />
 </RelativeLayout>
 <?xml version="." encoding="utf-"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="#ff"
   android:orientation="vertical" >
   <Button
     android:id="@+id/button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="返回Activity" />
 </LinearLayout>

别忘在AndroidManifast中注册activityb。

运行效果图:

startActivityForResult与startActivity的不同之处在于:

1、startActivity( )

仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。

2、startActivityForResult( )

可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。

更多精彩内容其他人还在看

android开发之Json文件的读写的示例代码

这篇文章主要介绍了android开发之Json文件的读写的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android7.0指纹服务FingerprintService实例介绍

这篇文章主要介绍了Android7.0指纹服务FingerprintService介绍,需要的朋友可以参考下
收藏 0 赞 0 分享

Android JNI处理图片实现黑白滤镜的方法

这篇文章主要介绍了Android JNI处理图片实现黑白滤镜的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android引入OpenCV的示例

本篇文章主要介绍了Android引入OpenCV的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android Zip解压缩工具类分享

这篇文章主要为大家详细介绍了Android Zip解压缩工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android RxJava创建操作符Interval

这篇文章主要为大家详细介绍了Android RxJava创建操作符Interval的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

5分钟快速实现Android爆炸破碎酷炫动画特效的示例

本篇文章主要介绍了5分钟快速实现Android爆炸破碎酷炫动效的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android 指纹功能实例代码

本文通过一个demo给大家介绍了android指纹功能,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

Android实现倒计时CountDownTimer使用详解

这篇文章主要为大家详细介绍了Android实现倒计时CountDownTimer的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android RxJava创建操作符Timer的方法

这篇文章主要为大家详细介绍了Android RxJava创建操作符Timer的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多