Intent用法之 回传数据

本文介绍如何在Android应用中实现Activity之间的数据传递。通过使用startActivityForResult和setResult方法,可以实现在不同Activity间的交互,并返回特定的数据。文章详细展示了如何在MainActivity中发起请求,在InfoActivity中选择图片并返回图片ID的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A   startActivityForResult(intent,requestCode);


B   setResult(resultCode, Intent data);


A   重写onActivityResult(requestCode,resultCode,data);


/**
* 通过startActivityForResult() 开启的界面, 需要有返回值,

* 则必须要通过 setResult() 方法返回数据

* resultCode  返回码

* data   intent意图对象
*/
Intent data = new Intent();
data.putExtra("imageId", imageId);

setResult(RESULT_OK, data);

//关闭当前Activity页面
finish();


package com.qf.day05_activity_04;

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

public class MainActivity extends Activity {

	private ImageView iv;

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

		iv = (ImageView) findViewById(R.id.iv);
	}

	public void show(View v) {
		Intent intent = new Intent(MainActivity.this, InfoActivity.class);

		// 带返回数据启动Activity
		startActivityForResult(intent, 110);
	}

	/**
	 * 获取回传的数据
	 * 
	 * int requestCode 请求码 int resultCode 结果码 Intent data 意图(带着返回参数)
	 */
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);

		if (requestCode == 110 && resultCode == RESULT_OK) {
			// 为图片控件设置内容

			int imageId = data.getIntExtra("imageId", R.drawable.ic_launcher);

			iv.setImageResource(imageId);
		}
	}

}


package com.qf.day05_activity_04;

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

public class InfoActivity extends Activity {

	private RadioGroup rg;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_info);
		
		rg = (RadioGroup) findViewById(R.id.rg);
	}

	//点击按钮后,将图片的ID 回传给MainActivity页面
	public void submit(View v)
	{
		//1, 得到当前选中的RadionButton的id
		int checkId = rg.getCheckedRadioButtonId();
		
		//图片的ID
		int imageId = R.drawable.ic_launcher;
		
		switch (checkId) {
		
		case R.id.rb1:
			
			imageId = R.drawable.img_31;
			
			break;

		case R.id.rb2:
			
			imageId = R.drawable.img_32;
			
			break;
			
		case R.id.rb3:
			
			imageId = R.drawable.img_33;
			
			break;
			
		case R.id.rb4:
			
			imageId = R.drawable.img_42;
			
			break;
			
		case R.id.rb5:
			
			imageId = R.drawable.img_43;
			
			break;
			
		case R.id.rb6:
			
			imageId = R.drawable.img_44;
			
			break;
		}
		
		
		/**
		 * 通过startActivityForResult() 开启的界面, 需要有返回值,
		 * 
		 * 则必须要通过 setResult() 方法返回数据
		 * 
		 * resultCode  返回码
		 * 
		 * data		   intent意图对象
		 */
		Intent data = new Intent();
		data.putExtra("imageId", imageId);
		
		setResult(RESULT_OK, data);
		
		//关闭当前Activity页面
		finish();
	}
	
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值