私人做医院的网站中国空间站结构示意图
先看下这三者的关系:
Activity_A通过startActivityForResult()去启动了Activity_B,
Activity_B在自己finish()之前,可以通过setResult()方法传递一个参数给Activity_A
Activity_A可以通过复写onActivityResult()方法来拿到回传值。
启动另外一个Activity有两种方法:
1、startActivity()主要作用就是启动acitivty,不可以回传数据。
2、startActivityForResult()主要作用也是启动acitivty,不同的就是它可以回传数据。
当activity关闭后,如果有返回值,则会在这个onActivityResult方法内接收。
��栗子来咯
Activity_A
package test.ban.com.teststartactivityforresultactivity;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;public class Activity_A extends Activity implementsView.OnClickListener {private TextView mText01;private TextView mText02;private Button button01;private Button button02;private Intent mIntent;private int requestCode;/*** Called when the activity is first created.*/@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mText01 = (TextView) findViewById(R.id.mText01);mText02 = (TextView) findViewById(R.id.mText02);button01 = (Button) findViewById(R.id.mButton01);button02 = (Button) findViewById(R.id.mButton02);button01.setOnClickListener(this);button02.setOnClickListener(this);mText01.setText("第一条数据");mText02.setText("第二条数据");mIntent = new Intent();//参数一为当前Package的context,当前Activity的context就是this,其他Package可能用到createPackageContex()//参数二为你要打开的Activity的类名mIntent.setClass(Activity_A.this, Activity_B.class);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.mButton01:// 请求码requestCode的值随便设置,但必须>=0requestCode = 0;/*** 跳转的时候不是采用startActivity(intent) 这个方法,而是startActivityForResult(intent, 0)*/startActivityForResult(mIntent, requestCode);break;case R.id.mButton02:requestCode = 2;/*** 跳转的时候不是采用startActivity(intent) 这个方法,而是startActivityForResult(intent, 0)*/startActivityForResult(mIntent, requestCode);break;default:break;}}/*** 重写onActivityResult方法,用来接收Activity_B回传的数据。* <p>* 回调方法,从Activity_B页面回来的时候会执行这个方法*/@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {//data为Activity_B中回传的Intent//change01、change02即为回传的值String change01 = data.getStringExtra("change01");String change02 = data.getStringExtra("change02");// 根据上面发送过去的请求吗来区别switch (requestCode) {//resultCode为回传的标记,我在B中回传的是resultCodecase 0:mText01.setText(change01);new Handler().postDelayed(new Runnable() {@Overridepublic void run() {mText01.setText("1000");}}, 1000);break;case 2:mText02.setText(change02);break;default:break;}}
}
activity_main.xml <?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"><TextViewandroid:id="@+id/mText01"android:layout_width="fill_parent"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/mText02"android:layout_width="fill_parent"android:layout_height="wrap_content"/><Buttonandroid:id="@+id/mButton01"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="改变第一行文本的值"/><Buttonandroid:id="@+id/mButton02"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="改变第二行文本的值"/>
</LinearLayout>
Activity_B
package test.ban.com.teststartactivityforresultactivity;/*** Created by apple on 16/8/29.*/import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;/*** 作者:ban on 16/8/29 09:44*/
public class Activity_B extends Activity {private int resultCode = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);//数据是使用Intent返回Intent mIntent = new Intent();//把返回数据存入IntentmIntent.putExtra("change01", "第一条数据改为:1000");mIntent.putExtra("change02", "第二条数据改为:2000");//设置返回数据//在Activity_B中回传数据时采用setResult方法,并且之后要调用finish方法。//mIntent为Activity_A传来的带有Bundle的intent,当然也可以自己定义新的Bundlethis.setResult(resultCode, mIntent);// this.finish();}}
activity_main2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="文本的值已经改变"/></LinearLayout>
源码地址:http://download.csdn.net/detail/u010566681/9615617