`

startActivityForResult()的用法

 
阅读更多

参考链接:http://www.cnblogs.com/mubai/archive/2011/09/21/2183816.html

 

 

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

 

这里实例,主界面是:MainActivity;子模块:SecondAcitivity

 

MainAcitivity:

 

package com.test.intentdemo;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	private Button btn=null;
	public final static int REQUEST_CODE=1;
    
    public void onCreate(Bundle savedInstanceState)//onCreate方法用来初始化Activity实例对象
    {
        super.onCreate(savedInstanceState);//super.onCreate(savedInstanceState)的作用是调用其父类Activity的onCreate方法来实现对界面的图画绘制工作
        setContentView(R.layout.activity_main);//setContentView(R.layout.main)的作用是加载一个界面
        btn=(Button)findViewById(R.id.btn);
        btn.setOnClickListener(listener);
    }
    private View.OnClickListener listener=new View.OnClickListener()
	{
		
		@Override
		public void onClick(View v)
		{
//			Intent intent=new Intent();
//			intent.setAction(Intent.ACTION_SENDTO);
//			intent.setData(Uri.parse("smsto:5554"));
//			intent.putExtra("sms_body", "Hello!");//sms_body不能随意换成
//			startActivity(intent);
			Intent intent=new Intent();
			intent.setClass(MainActivity.this, SecondActivity.class);//从一个activity跳转到另一个activity
			intent.putExtra("str", "Intent Demo");//给intent假如额外数据,key为“str”,key值为"Intent Demo"
			//startActivity(intent);
			startActivityForResult(intent,REQUEST_CODE);//如果requestCode>=0,就会调用onActivityResult()
		}
	};
	
	protected void onActivityResult(int requestCode, int resultCode, Intent data) //requesCode用于标识对应于哪一个子模块,resultCode用于标识了子模块中哪一个intent携带的数据
	{
		if(requestCode==REQUEST_CODE)
		{
			switch(resultCode)
			{
			case SecondActivity.RESULT_CODE:
				Bundle bundle=data.getExtras();//不需要声明新的Intent对象,直接用data就可以,这里的data应该是SecondAcitivity传递过来的
				String str =bundle.getString("back");
				Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();
				break;
		    default:
					break;
			}
				
			
		}
	};
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }    
}

 

 

SecondAcitivity:

 

package com.test.intentdemo;

import android.R.string;
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 SecondActivity extends Activity
{
	private TextView secondTxt;
	private Button secondBtn;
	public final static int RESULT_CODE=1;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		Intent intent=getIntent();//getIntent将该项目中包含的原始intent检索出来,将检索出来的intent赋值给一个Intent类型的变量intent
		Bundle bundle=intent.getExtras();//.getExtras()得到intent所附带的额外数据
		String str=bundle.getString("str");//getString()返回指定key的值
		secondTxt=(TextView)findViewById(R.id.secondTxt);//用TextView显示值
		secondTxt.setText(str);
		secondBtn=(Button)findViewById(R.id.btn2);
		secondBtn.setOnClickListener(listener);
		
	}
   private View.OnClickListener listener=new View.OnClickListener()
{
	
	@Override
	public void onClick(View v)
	{
		// TODO Auto-generated method stub
		Intent intent=new Intent(SecondActivity.this,MainActivity.class);
		intent.putExtra("back", "Back Data");
		setResult(RESULT_CODE, intent);//resultCode用于标识此intent
		finish();
		
	}
};
}

分享到:
评论

相关推荐

    startActivityForResult用法详解

    下面我们将深入探讨`startActivityResult`的使用方法及其在获取通讯录信息中的应用。 首先,让我们了解`startActivityForResult`的基本语法: ```java Intent intent = new Intent(this, SecondActivity.class); ...

    startActivityForResult使用方式

    在Android应用开发中,`startActivityForResult()`是一个关键的方法,用于在不同的Activity之间进行数据交互。这个方法允许一个Activity启动另一个Activity,并等待返回的结果。在本篇中,我们将深入探讨`...

    startActivityForResult的详细用法

    下面我们将深入探讨`startActivityForResult`的详细用法。 1. **启动Activity并传递数据** 使用`startActivityForResult`启动另一个Activity时,我们通常会通过Intent对象来传递数据。Intent不仅用于启动Activity...

    startActivityForResult用法实例

    在Android应用开发中,`startActivityForResult()`是一个关键的方法,用于启动一个新的Activity并期待返回一个结果。这个方法在实现交互式流程或者数据交换时非常常见,例如选择照片、获取用户输入等。下面将详细...

    startActivityForResult的简单使用

    定义了4个Activity,主activity跳转到其他2个时附带String good,第二个在接收到数据后将String +"boy"后返回给主Activity并Toast;第三个在接收到数据后将String +"boy&girl"后返回给主Activity并Toast。...

    StartActivityForResult

    `StartActivityForResult`的基本用法 `StartActivityForResult`方法有两个参数:`Intent`和`int`。`Intent`用于指定要启动的目标Activity,而`int`是请求码,用于区分不同的启动操作。基本调用如下: ```java ...

    android开发教程之startActivityForResult使用方法

    以下是对`startActivityForResult()` 使用方法的详细说明: 1. **启动Activity并等待结果:** 当我们使用`startActivityForResult(Intent intent, int requestCode)` 启动一个新的Activity时,`intent` 参数是一个...

    Android之Intent通过startActivityForResult方法启动新Activity

    `startActivityForResult()`是Intent的一种特殊用法,它允许一个Activity启动另一个Activity,并期望在新Activity执行完特定操作后返回结果。下面将详细阐述`startActivityForResult()`的工作原理及其在实际开发中的...

    【android】的startActivityForResult

    **一、startActivityForResult基本用法** `startActivityForResult`有两个参数:Intent和int请求码。Intent是用来启动目标Activity的,请求码用于在`onActivityResult`中区分来自不同活动的结果。 ```java Intent ...

    startActivityForResult intent 跳转相关的

    在Android应用开发中,`startActivityForResult()`是一个关键方法,用于在不同的Activity之间进行交互,尤其是在需要从一个Activity获取返回结果时。这个方法允许我们启动一个新的Activity,并在它完成之后得到回调...

    简化 startActivityForResult 的使用1

    传统的使用方式是定义 requestCode,然后调用 startActivityForResult 方法,最后重写 Activity 或者 Fragment 的 onActivityResult 方法来处理结果。但是,这种方法存在一些问题。当 requestCode 比较多的时候,...

    Android-一种startActivityForResult更简单流程

    首先,让我们理解`startActivityForResult()`的基本用法。当我们在Activity A中调用`startActivityForResult(Intent intent, int requestCode)`时,其中`intent`是用于启动新Activity的Intent,`requestCode`是一个...

    startActivityForResult你所不知道的---Fragment

    首先,让我们深入了解一下`startActivityForResult()`的使用方法。在`Fragment`中,你需要调用`getActivity().startActivityForResult()`,并传入一个`Intent`对象来指定要启动的`Activity`和任何相关的数据。例如:...

    startActivityForResult Demo

    这篇博客“startActivityForResult Demo”可能详细介绍了如何使用这个方法以及相关的实践案例。 `startActivityForResult`的工作原理是这样的:当一个Activity(我们称为启动Activity)调用`startActivityForResult...

    startActivityForResult+onActivityResult+setResult

    3个方法的介绍和使用 startActivityForResult(Intent intent, int requestCode ) onActivityResult(int requestCode ,int resultCode, Intent data) setResult(int resultCode,intent intent)

    关于Activity与Fragment混用中对于startActivityForResult方法的解析示例

    以上就是关于Activity与Fragment混用中使用`startActivityForResult()`方法的解析。通过理解这个过程,开发者能够更好地管理应用程序的流程,提高用户体验。在实际的项目开发中,这样的交互方式是非常常见的,因此...

    StartActivityForResult小例子

    下面将详细阐述`StartActivityForResult`的工作原理、使用步骤以及一些注意事项。 ### 1. 工作原理 `StartActivityForResult`的工作流程如下: 1. 主Activity(启动者)调用`startActivityForResult`方法,传入被...

    startActivityForResult_demo

    下面将详细介绍`startActivityForResult`的工作原理和使用方法。 一、`startActivityForResult`的基本用法 1. 启动新活动:调用`startActivityForResult(Intent intent, int requestCode)`,其中`intent`参数是一...

    Android-基于RxPermissions框架思想在使用startActivityForResult可以不重写onActivityResult回调

    这需要我们使用`Intent.createObservable()`方法,结合`subscribeOn`和`observeOn`来指定线程行为。例如: ```java Observable<Result> resultObservable = Intent.createObservable(context, new Func1, Result>()...

Global site tag (gtag.js) - Google Analytics