栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

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

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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文件

 
   

别忘在AndroidManifast中注册activityb。

运行效果图:

startActivityForResult与startActivity的不同之处在于:

1、startActivity( )

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

2、startActivityForResult( )

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/163932.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号