Android活动间调用并且返回后的数据
2014-08-27 18:28
246 查看
Android活动之间相互跳转并且返回数据的时候,需要使用Activity的startActivityForResult()方法。下面将有一个例子来详细讲述startActivityForResult()方法和一些注意事项。
例子:
1. activity_first.xml
2. FirstActivity
3. activity_second.xml
4. SecondActivity
5. activity_third.xml
6. ThirdActivity
实现流程:
以FirstActivity和SecondActivity为例。
1. FirstActivity跳转到SecondActivity。
2. SecondActivity使用getIntent()方法,获得FirstActivity传过来的Intent对象。
3. SecondActivity将需要返回的数据封装在Intent对象中。
4. SecondActivity 使用serResult()方法将Intent对象返回。
5. SecondActivity finish()。
6. FirstActivity执行onActivityResult方法。
注意事项:
对根据上面的例子进行一下说明。
1. 一个Activity可以调用多个Activity并且返回数据,例如FirstActivity.
2. 被调用并且需要返回数据的Activity可以根据不同情况给予不同的返回数据,例如SecondActivity。
3. FirstActivity调用SecondActivity后需要返回FirstActivity的时候,SecondActivity必须执行finish(),返回到FirstActivity后只执行onActivityResult方法。
参考网址:
1.http://blog.csdn.net/conowen/article/details/7292246
例子:
1. activity_first.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".FirstActivity" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="20dp" android:text="转到SecondActivity" android:onClick="OnSecondClick"/> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button" android:onClick="OnThirdClick" android:text="转到ThirdActivity" /> </RelativeLayout>
2. FirstActivity
package com.example.teststartactivityforresult; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Toast; public class FirstActivity extends Activity { public String message; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); } public void OnSecondClick(View v){ Intent intent = new Intent(); intent.setClass(this, SecondActivity.class); startActivityForResult(intent,2);//转到SecondActivity } public void OnThirdClick(View v){ Intent intent = new Intent(); intent.setClass(this, ThirdActivity.class); startActivityForResult(intent,3);//转到ThirdActivity } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode){ case 2: switch(resultCode){ case 0: message = data.getStringExtra("return"); Toast.makeText(this, message, Toast.LENGTH_LONG).show(); break; case 1: message = data.getStringExtra("return"); Toast.makeText(this, message, Toast.LENGTH_LONG).show(); break; } break; case 3: switch(resultCode){ case RESULT_OK: message = data.getStringExtra("return"); Toast.makeText(this, message, Toast.LENGTH_LONG).show(); } break; } } }
3. activity_second.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".SecondActivity" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="20dp" android:text="返回0到FirstActivity" android:onClick="OnButtonClick"/> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button" android:layout_below="@+id/button" android:layout_marginTop="18dp" android:onClick="OnButton2Click" android:text="返回1到FirstActivity" /> </RelativeLayout>
4. SecondActivity
package com.example.teststartactivityforresult; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; public class SecondActivity extends Activity { public Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); intent = this.getIntent(); } public void OnButtonClick(View v){ intent.putExtra("return", "SecondActivity-0- 返回的内容"); setResult(0,intent);//回调FirstActivity finish();//一定要结束该Activity 结束后返回到FirstActivity只执行onActivityResult方法 } public void OnButton2Click(View v){ intent.putExtra("return", "SecondActivity-1-返回的内容"); setResult(1,intent);//回调FirstActivity finish();//一定要结束该Activity 结束后返回到FirstActivity只执行onActivityResult方法 } }
5. activity_third.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".ThirdActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout>
6. ThirdActivity
package com.example.teststartactivityforresult; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; public class ThirdActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_third); Intent intent = this.getIntent(); intent.putExtra("return", "ThirdActivity返回的内容"); setResult(RESULT_OK,intent); finish(); } }
实现流程:
以FirstActivity和SecondActivity为例。
1. FirstActivity跳转到SecondActivity。
2. SecondActivity使用getIntent()方法,获得FirstActivity传过来的Intent对象。
3. SecondActivity将需要返回的数据封装在Intent对象中。
4. SecondActivity 使用serResult()方法将Intent对象返回。
5. SecondActivity finish()。
6. FirstActivity执行onActivityResult方法。
注意事项:
对根据上面的例子进行一下说明。
1. 一个Activity可以调用多个Activity并且返回数据,例如FirstActivity.
2. 被调用并且需要返回数据的Activity可以根据不同情况给予不同的返回数据,例如SecondActivity。
3. FirstActivity调用SecondActivity后需要返回FirstActivity的时候,SecondActivity必须执行finish(),返回到FirstActivity后只执行onActivityResult方法。
参考网址:
1.http://blog.csdn.net/conowen/article/details/7292246
相关文章推荐
- 关于调用Android相机拍摄照片返回数据过小的问题
- Android中的startActivityForResult启动活动并取得返回数据的使用
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- Android Intent返回数据给上一个活动
- Android intent返回数据给上一个活动
- Android 跨程序调用,返回数据获取不到的问题
- Android调用webservice返回数据为空
- android 启动子活动返回数据
- Android返回数据给上一个活动-startActivityForResult
- Android 系列 4.5从子活动检索数据返回主要活动
- Android如何将数据返回给上一个活动
- android调用系统相机拍照,返回数据为空的一些说明
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android调用系统(相机)的图片,并且返回
- Android学习之省份城市县区选择+向上一级活动返回数据
- 调用.NET XML Web Services返回数据集合一
- 非.NET语言调用.NET XML Web Services返回的数据集合的两个方法
- webservice 优化性能的方法,以返回Dataset为例,当大数据量时采用先压缩的方式,调用再解压缩