`
gryphone
  • 浏览: 433544 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

startActivityForResult 用法

阅读更多

Activity 跳转 都知道用startActivity(Intent)

 

但是如果下面情况呢?

 

Activity1 跳转到 Activity2  但是还需要在Activity2 再回到 Activity1呢? 可能有人说: 那我在Activity2  再使用 startActivity() 不就可以了 是的 但是 startActivityForResult() 能够直接完成这项工作

 

 

[示例]

Activity1: 有2个EditText 用于接收用户输入的2个字符串 要求把这2个字符串连接起来 我现在把连接的工作交给 Activity2 来做 并且把连接好后的字符串再返回给 Activity1 并由它负责显示

 

[代码]

1. 构建 Activity1 所需的界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<EditText  
	android:id="@+id/first"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
<EditText  
	android:id="@+id/second"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
<Button  
	android:id="@+id/start"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="start"
    />
<TextView  
	android:id="@+id/text"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="...is waiting"
    />
</LinearLayout>

 

 

 

 

2. 得到2个EditText的用户输入

first = (EditText) findViewById(R.id.first);
        second = (EditText) findViewById(R.id.second);

 

 

3. 把字符串装入Bundle 再放置于Intent 然后发送之

Intent i = new Intent(this, Activity2.class);
    	
    	Bundle b = new Bundle();
    	
    	b.putString("first", first.getText().toString());
    	b.putString("second", second.getText().toString());
    	
    	i.putExtras(b);
    	
    	startActivityForResult(i,10);

 

补充:

public void startActivityForResult (Intent intent, int requestCode) 

Intent intent:系统会根据这个确定目的Activity

int requestCode:用于标识该Intent 回来后确定是不是想要的返回

 

 

4. 注册View监听器

findViewById(R.id.start).setOnClickListener(new OnClickListener(){
			public void onClick(View v) {
				// TODO Auto-generated method stub
				sendCalculate();
			}
        });

 

 

 

5. 构建 Activity2 的界面 把处理的结果返回

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Button  
	android:id="@+id/reply"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="reply"
    />
</LinearLayout>

 

 

6. 得到传入的Intent 以及传过来的2个字符串 并连接之

Intent i = this.getIntent();
        
        Bundle b = i.getExtras();
        
        String v1 = b.getString("first");
        String v2 = b.getString("second");
        
        value = v1 + v2;

 

 

7. 定义Intent 并存放返回结果 并返回之

Intent i = new Intent();
    	
    	Bundle b = new Bundle();
    	b.putString("CALCULATION", value);
    	
    	i.putExtras(b);
    	
    	this.setResult(RESULT_OK, i);
    	this.finish();

 

 

8. 事情完成了么? 当然没有 别忘了 Activity1 还要接收数据并显示之

protected void onActivityResult(int requestCode, int resultCode,
                                    Intent data){
    	switch (resultCode){
    	case RESULT_OK:
    		Bundle b = data.getExtras();
    		
    		String string = b.getString("CALCULATION");
    		
    		updateText(string);
    	}
    }

 

 

现在才是真的结束了! 看看运行效果吧

 

1.  

 

 

2.

 

 

3.

 

分享到:
评论

相关推荐

    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&lt;Result&gt; resultObservable = Intent.createObservable(context, new Func1, Result&gt;()...

Global site tag (gtag.js) - Google Analytics