Android onActivityResult

本文详细介绍了Android中如何使用startActivityForResult进行Activity之间的数据交互。通过示例代码展示了从一个Activity启动另一个Activity,并在完成特定任务后将结果返回给源Activity的过程。

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

1)在Android中startActivityForResult主要作用就是:

A-Activity需要在B-Activtiy中执行一些数据操作,而B-Activity又要将,执行操作数据的结果返回给A-Activtiy

2)接下来我将附加代码讲述

1.添加AddActivity和EditActivity

2.将主窗体MainActivity修改成代码如下

主要实现的功能是跳转到子Activity(AddActivity,EditActivity)并根据请求代码和结果代码获取子窗体的参数。

package com.example.androiddemo2;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

	private Button addButton=null;
	private Button editButton=null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		/*跳转到AddActivity*/
		addButton=(Button)findViewById(R.id.addButton);
		addButton.setOnClickListener(new Button.OnClickListener() {
			@Override
			public void onClick(View arg0) {
				Intent addIntent=new Intent(MainActivity.this, AddActivity.class);
				/*addRequest是一个“请求代码”应该大于等于0它将会在onActivityResult()中返回*/
				startActivityForResult(addIntent, BaseField.AddRequest);
			}
		});
		/*跳转到EditActivity*/
		editButton=(Button)findViewById(R.id.editButton);
		editButton.setOnClickListener(new Button.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				Intent editIntent=new Intent(MainActivity.this,EditActivity.class);
				Bundle bundle=new Bundle();
				bundle.putString("username", "张三");
				bundle.putString("password", "123456");
				editIntent.putExtras(bundle);
				/*editRequest是一个“请求代码”应该大于等于0它将会在onActivityResult()中返回*/
				startActivityForResult(editIntent, BaseField.EditRequest);
			}
		});
	}
	 /** 
     * 重写onActivityResult这个方法 
     * 是要等到AddActivity,EditActivity finish后才会执行的 
     */  
    @Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data)  
    {
    	/*添加请求代码和添加结果代码*/
    	if(requestCode==BaseField.AddRequest&&resultCode==BaseField.AddResult){
    		Bundle bundle=data.getExtras();
    		Log.i(BaseField.Tag, bundle.getString("message"));
    	}
    	/*修改请求代码和修改结果代码*/
    	if(requestCode==BaseField.EditRequest&&resultCode==BaseField.EditResult){
    		Bundle bundle=data.getExtras();
    		Log.i(BaseField.Tag, bundle.getString("message"));
    	}
    	super.onActivityResult(requestCode, resultCode, data);
    }

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
3.修改AddActivity代码如下

实现的功能是设置回传参数和结果代码并关闭Activity促使MainActivity调用onActivityResult方法

package com.example.androiddemo2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class AddActivity extends Activity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    /*设置回传参数和结果代码后finish Activity*/
	    Intent intent=new Intent();
	    intent.putExtra("message", "add success");
	    setResult(BaseField.AddResult, intent);
	    finish();
	}

}

4.修改EditActivity代码如下

实现功能是获取MainActivity传过来的参数,然后设置回传参数和结果代码并关闭Activity促使MainActivity调用onActivityResult方法

package com.example.androiddemo2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class EditActivity extends Activity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    /*获取传递的参数*/
	    Bundle bundle=this.getIntent().getExtras();  
	    Log.i(BaseField.Tag, bundle.getString("username"));
	    Log.i(BaseField.Tag, bundle.getString("password"));
	    /*设置回传参数和结果代码后finish Activity*/
	    Intent intent=new Intent();
	    intent.putExtra("message", "edit success");
	    setResult(BaseField.EditResult, intent);
	    finish();
	}

}

5.添加一个类BaseField.java用来存放“添加请求代码”、”添加结果代码“...

具体代码如下

package com.example.androiddemo2;

public class BaseField {
	/*添加请求代码*/
	public static int AddRequest=101;
	/*修改请求代码*/
	public static int EditRequest=201;
	/*添加结果代码*/
	public static int AddResult=102;
	/*修改结果代码*/
	public static int EditResult=202;
	
	public static String Tag="TAG"; 
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值