返回Activity时传递数据(如发送短信时引用联系人)

原创 2015年11月20日 15:44:39

从A界面打开B界面, B界面关闭的时候,返回一个数据给A界面

步骤: 1. 开启activity并且获取返回值

    startActivityForResult(intent, 0);
  1. 在新开启的界面里面实现设置数据的逻辑

    Intent data = new Intent();
    data.putExtra("phone", phone);
    //设置一个结果数据,数据会返回给调用者
    setResult(0, data);
    finish();//关闭掉当前的activity,才会返回数据
    
  2. 在开启者activity里面实现方法 onActivityResult(int requestCode, int resultCode, Intent data) 通过data获取返回的数据

  3. 根据请求码和结果码确定业务逻辑

MainActivity.java
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
	}

	public void click(View c){
		//跳转至选择联系人Activity
		Intent intent = new Intent(this, ContactActivity.class);
//		startActivity(intent);
		//用这个api启动的Activity,在销毁时,系统会回调onActivityResult
		startActivityForResult(intent, 10);
	}
	
	
	public void click2(View v){
		//跳转至选择快捷回复的Activity
		Intent intent = new Intent(this, CallbackActivity.class);
		startActivityForResult(intent, 20);
	}
	//如果有Activity在销毁时返回了数据,那么就会调用此方法来接收数据
	//requestCode:用来区分数据来自于哪一个Activity
	//resultCode:用来区分返回的数据是什么类型的
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		
		String name = data.getStringExtra("name");
		if(requestCode == 10){
			EditText et = (EditText)findViewById(R.id.et);
			et.setText(name);
		}
		else if(requestCode == 20){
			EditText et_content = (EditText)findViewById(R.id.et_content);
			et_content.setText(name);
		}
	}
	

}
ContactActivity.java
package com.itheima.getresult;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ContactActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_contact);
		
		ListView lv = (ListView) findViewById(R.id.lv);
		
		final String[] objects = new String[]{
				"小志",
				"逼哥",
				"世界级XXX",
				"国服第一"
		};
		
		lv.setAdapter(new ArrayAdapter<String>(this, R.layout.item_listview, R.id.tv, objects));
	
		//给listview设置条目的点击侦听
		lv.setOnItemClickListener(new OnItemClickListener() {

			//当某个条目被点击时,此方法调用
			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				
				//Activity返回时传递数据,也是通过意图对象
				Intent data = new Intent();
				//把要传递的数据封装至意图对象中
				data.putExtra("name", objects[position]);
				
				//当前Activity销毁时,data这个意图就会传递给启动当前Activity的那个Activity
				setResult(1, data);
				
				//销毁当前Activity
				finish();
			}
		});
	}
	
	@Override
	public void onBackPressed() {
		// TODO Auto-generated method stub
		super.onBackPressed();
	}
}
CallBackActivity.java

package com.itheima.getresult;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class CallbackActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_contact);
		
		ListView lv = (ListView) findViewById(R.id.lv);
		
		final String[] objects = new String[]{
				"免谈,没戏,滚犊子",
				"媳妇我错了,求原谅",
				"老子才是一家之主"
		};
		lv.setAdapter(new ArrayAdapter<String>(this, R.layout.item_listview, R.id.tv, objects));
		
		lv.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				Intent data = new Intent();
				data.putExtra("name", objects[position]);
				
				setResult(2, data);
				finish();
				
			}
		});
	}
}



返回Activity时传递数据

后退操作是携带数据:通讯录中选择联系人、快捷回复等
  • a987687115
  • a987687115
  • 2015年10月26日 15:58
  • 180

得到新打开Activity 关闭后返回的数据

如果你想在Activity中得到新打开Activity关闭后返回的数据,你需要使用Activity提供的startActivityForResult(Intent intent,int request...
  • yujian_bing
  • yujian_bing
  • 2013年01月07日 13:09
  • 7293

Android_06_返回Activity时,传递数据

MainActivity.java package com.itheima.getresult; import android.os.Bundle; import android.app.Acti...
  • u010661782
  • u010661782
  • 2015年10月21日 10:18
  • 309

Activity Fragment数据传递(对象)引用不变问题

一.背景 一天写代码出了bug,Activity传给fragment的arraylist经过fragment中的修改居然会改变activity的arrayList(之前传给fragment的那个),...
  • u011889786
  • u011889786
  • 2017年02月12日 21:13
  • 487

Android基础笔记(十三)- 内容提供者原理和简单使用

为什么要有内容提供者 内容提供者的工作原理 使用内容解析者对内容提供者进行增删改查操作 利用内容提供者和内容解析者备份手机短信 利用内容提供者插入短信...
  • biezhihua
  • biezhihua
  • 2015年03月17日 21:21
  • 2196

Android Activity、Fragment之间的数据传递和返回

Activity之间通过Intent传递数据 Intent intent = new Intent(this, TwoActivity.class); intent.pu...
  • w18756901575
  • w18756901575
  • 2016年07月19日 16:42
  • 8234

Activity跳转时的数据传递

Intent是Activity与Activity之间,Activity与Service之间传递参数的介质,使用Intent和Bundle在组件之间传递数据,而这两种通常实现的是Java基本对象类型和S...
  • idiandi
  • idiandi
  • 2016年08月28日 06:30
  • 290

关于fragment间数据传递和相互切换的问题

最近写了一个小项目(仿写良仓),遇到了fragment数据传递和页面切换问题,纠结了好久,也百度不少,废话少说,先上图,看看界面 这是主界面看到这个,最基本的思路就是在一个activity里面嵌套着5...
  • u013721227
  • u013721227
  • 2017年01月15日 23:00
  • 858

EventBus进入Activity页面给Fragment传值,并弹出提示

1. 进入页面先访问网络状态.返回true或false表示网络状态的有无,将这个值使用EventBus传给Fragment页面 首先需要导入依赖 [html] view plain c...
  • IT666DHW
  • IT666DHW
  • 2017年12月03日 20:33
  • 144

Android上在两个Activity之间传递Bitmap对象

转自:http://blog.csdn.net/jia20003/article/details/50212195 Android上在两个Activity之间传递Bitmap对象 因为...
  • u013164293
  • u013164293
  • 2016年11月28日 19:56
  • 928
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:返回Activity时传递数据(如发送短信时引用联系人)
举报原因:
原因补充:

(最多只允许输入30个字)