Activity之间数据交流(onActivityResult的用法)

主要功能:

在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult。

<1>startActivityForResult(Intent intent, intrequestCode);

第一个参数:一个Intent对象

第二个参数:如果>= 0,当Activity结束时requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回

<2>onActivityResult(intrequestCode, int resultCode, Intent data)

第一个参数:这个整数requestCode提供给onActivityResult,是以便确认返回的数据是从哪个Activity返回的。

           这个requestCode和startActivityForResult中的requestCode相对应。

第二个参数:这整数resultCode是由子Activity通过其setResult()方法返回。


第三个参数:一个Intent对象,带有返回的数据。

<3>setResult(intresultCode, Intent data)

调用这个方法把Activity想要返回的数据返回到父Activity

第一个参数:当Activity结束时resultCode将归还在onActivityResult()中,一般为RESULT_CANCELED , RESULT_OK。

第二个参数:一个Intent对象,返回给父Activity的数据。

本实例一共有三个Activity。点击飞往火星跳转到otherActivity,把地球带给火星的消息显示在otherActivity中。点击返回地球时把火星带给地球的消息传到主Activity.

同理:

点击飞往月球跳转到thirdActivity,把地球带给月球的消息显示在thirdActivity中。点击返回地球时把月球带给地球的消息传到主Activity.

 

具体实现:

主Activity

package com.intent;


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.TextView;

public class OnActivityResultActivity extends Activity
{
	private Button				button	= null;
	private Button				button1	= null;
	private TextView			text	= null;
	private static final int	Mars	= 0;
	private static final int	Moon	= 1;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		text = (TextView) findViewById(R.id.text);
		button = (Button) findViewById(R.id.button);
		button1 = (Button) findViewById(R.id.button1);
		
		button.setOnClickListener(new MyOnClickListener());
		button1.setOnClickListener(new MyOnClickListener());
	}
		
		class MyOnClickListener implements OnClickListener
		{
		  public void onClick(View v)
		  {
			  switch(v.getId())
			  {
			  case R.id.button:
					Intent intent = new Intent(OnActivityResultActivity.this, OtherActivity.class);
					String content = "地球来的消息:你好,我是来自地球上的小老鼠。我好想去你们的火星呀";
					intent.putExtra("FromEarth", content);
					startActivityForResult(intent, Mars);
			  break;
			  case R.id.button1:
					Intent intent1 = new Intent(OnActivityResultActivity.this, ThirdActivity.class);
					String content1 = "地球来的消息:你好,我是来自地球上的小老鼠。我好想去你们月球";
					intent1.putExtra("FromEarth", content1);
					startActivityForResult(intent1, Moon);
					break;
			  }
		}
			
}



	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data)
	{
		switch (requestCode)
		{
		case Mars:
			Bundle MarsBuddle = data.getExtras();
			String MarsMessage = MarsBuddle.getString("FromMars");
			text.setText(MarsMessage);
			break;
		case Moon:
			Bundle MoonBuddle = data.getExtras();
			String MoonMessage = MoonBuddle.getString("FromMoon");
			text.setText(MoonMessage);
			break;
		}
	}
}

package com.intent;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class OtherActivity extends Activity
{
	private Button	button	= null;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.other);
		Intent EarthIntent = this.getIntent();
		String EarthMessage = EarthIntent.getStringExtra("FromEarth");
		
		button = (Button) findViewById(R.id.button);
		button.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v)
			{
				Intent intent = new Intent(OtherActivity.this, OnActivityResultActivity.class);
				String passString = "火星来的消息:Hello,我是火星的Jack,非常高兴你能来火星";
				intent.putExtra("FromMars", passString);
				setResult(RESULT_OK, intent);
				finish();
			}
		});
		TextView textView = (TextView) findViewById(R.id.othertext);
		textView.setText(EarthMessage);
	}
}

package com.intent;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class ThirdActivity extends Activity
{
	private Button	button	= null;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.third);
		Intent EarthIntent = this.getIntent();
		String EarthMessage = EarthIntent.getStringExtra("FromEarth");
		
		button = (Button) findViewById(R.id.button);
		button.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v)
			{
				Intent intent = new Intent(ThirdActivity.this, OnActivityResultActivity.class);
				String passString = "月球来的消息:Hello,我是月球的Lucy,非常欢迎你来月球";
				intent.putExtra("FromMoon", passString);
				setResult(RESULT_OK, intent);
				finish();
			}
		});
		TextView textView = (TextView) findViewById(R.id.thirdtext);
		textView.setText(EarthMessage);
	}
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button"
        android:layout_width="278dp"
        android:layout_height="wrap_content"
        android:text="@string/Button" />

    <Button
        android:id="@+id/button1"
        android:layout_width="286dp"
        android:layout_height="wrap_content"
        android:text="@string/Button1" />

    <TextView
        android:id="@+id/text"
        android:layout_width="295dp"
        android:layout_height="0dp"
        android:layout_weight="0.19"
        android:text="TextView" />

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button"
        android:layout_width="268dp"
        android:layout_height="wrap_content"
        android:text="@string/Button2" />

    <TextView
        android:id="@+id/othertext"
        android:layout_width="306dp"
        android:layout_height="0dp"
        android:layout_weight="0.05"
        android:text="TextView1" />

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button"
        android:layout_width="302dp"
        android:layout_height="wrap_content"
        android:text="@string/Button3" />

    <TextView
        android:id="@+id/thirdtext"
        android:layout_width="296dp"
        android:layout_height="0dp"
        android:layout_weight="0.09"
        android:text="TextView2" />

</LinearLayout>


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值