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.
分享到:
相关推荐
下面我们将深入探讨`startActivityResult`的使用方法及其在获取通讯录信息中的应用。 首先,让我们了解`startActivityForResult`的基本语法: ```java Intent intent = new Intent(this, SecondActivity.class); ...
在Android应用开发中,`startActivityForResult()`是一个关键的方法,用于在不同的Activity之间进行数据交互。这个方法允许一个Activity启动另一个Activity,并等待返回的结果。在本篇中,我们将深入探讨`...
下面我们将深入探讨`startActivityForResult`的详细用法。 1. **启动Activity并传递数据** 使用`startActivityForResult`启动另一个Activity时,我们通常会通过Intent对象来传递数据。Intent不仅用于启动Activity...
在Android应用开发中,`startActivityForResult()`是一个关键的方法,用于启动一个新的Activity并期待返回一个结果。这个方法在实现交互式流程或者数据交换时非常常见,例如选择照片、获取用户输入等。下面将详细...
定义了4个Activity,主activity跳转到其他2个时附带String good,第二个在接收到数据后将String +"boy"后返回给主Activity并Toast;第三个在接收到数据后将String +"boy&girl"后返回给主Activity并Toast。...
`StartActivityForResult`的基本用法 `StartActivityForResult`方法有两个参数:`Intent`和`int`。`Intent`用于指定要启动的目标Activity,而`int`是请求码,用于区分不同的启动操作。基本调用如下: ```java ...
以下是对`startActivityForResult()` 使用方法的详细说明: 1. **启动Activity并等待结果:** 当我们使用`startActivityForResult(Intent intent, int requestCode)` 启动一个新的Activity时,`intent` 参数是一个...
`startActivityForResult()`是Intent的一种特殊用法,它允许一个Activity启动另一个Activity,并期望在新Activity执行完特定操作后返回结果。下面将详细阐述`startActivityForResult()`的工作原理及其在实际开发中的...
**一、startActivityForResult基本用法** `startActivityForResult`有两个参数:Intent和int请求码。Intent是用来启动目标Activity的,请求码用于在`onActivityResult`中区分来自不同活动的结果。 ```java Intent ...
在Android应用开发中,`startActivityForResult()`是一个关键方法,用于在不同的Activity之间进行交互,尤其是在需要从一个Activity获取返回结果时。这个方法允许我们启动一个新的Activity,并在它完成之后得到回调...
传统的使用方式是定义 requestCode,然后调用 startActivityForResult 方法,最后重写 Activity 或者 Fragment 的 onActivityResult 方法来处理结果。但是,这种方法存在一些问题。当 requestCode 比较多的时候,...
首先,让我们理解`startActivityForResult()`的基本用法。当我们在Activity A中调用`startActivityForResult(Intent intent, int requestCode)`时,其中`intent`是用于启动新Activity的Intent,`requestCode`是一个...
首先,让我们深入了解一下`startActivityForResult()`的使用方法。在`Fragment`中,你需要调用`getActivity().startActivityForResult()`,并传入一个`Intent`对象来指定要启动的`Activity`和任何相关的数据。例如:...
这篇博客“startActivityForResult Demo”可能详细介绍了如何使用这个方法以及相关的实践案例。 `startActivityForResult`的工作原理是这样的:当一个Activity(我们称为启动Activity)调用`startActivityForResult...
3个方法的介绍和使用 startActivityForResult(Intent intent, int requestCode ) onActivityResult(int requestCode ,int resultCode, Intent data) setResult(int resultCode,intent intent)
以上就是关于Activity与Fragment混用中使用`startActivityForResult()`方法的解析。通过理解这个过程,开发者能够更好地管理应用程序的流程,提高用户体验。在实际的项目开发中,这样的交互方式是非常常见的,因此...
下面将详细阐述`StartActivityForResult`的工作原理、使用步骤以及一些注意事项。 ### 1. 工作原理 `StartActivityForResult`的工作流程如下: 1. 主Activity(启动者)调用`startActivityForResult`方法,传入被...
下面将详细介绍`startActivityForResult`的工作原理和使用方法。 一、`startActivityForResult`的基本用法 1. 启动新活动:调用`startActivityForResult(Intent intent, int requestCode)`,其中`intent`参数是一...
这需要我们使用`Intent.createObservable()`方法,结合`subscribeOn`和`observeOn`来指定线程行为。例如: ```java Observable<Result> resultObservable = Intent.createObservable(context, new Func1, Result>()...