主要功能:
在一個主介面(主Activity)上能串連往許多不同子功能模組(子Activity上去),當子模組的事情做完之後就回到主介面,或許還同時返回一些子模組完成的資料交給主Activity處理。這樣的資料交流就要用到回呼函數onActivityResult。
<1>startActivityForResult(Intent intent, int requestCode);
第一個參數:一個Intent對象
第二個參數:如果> = 0,當Activity結束時requestCode將歸還在onActivityResult()中。以便確定返回的資料是從哪個Activity中返回
<2>onActivityResult(int requestCode, int resultCode, Intent data)
第一個參數:這個整數requestCode提供給onActivityResult,是以便確認返回的資料是從哪個Activity返回的。
這個requestCode和startActivityForResult中的requestCode相對應。
第二個參數:這整數resultCode是由子Activity通過其setResult()方法返回。
第三個參數:一個Intent對象,帶有返回的資料。
<3>setResult(int resultCode, Intent data)
調用這個方法把Activity想要返回的資料返回到父Activity
第一個參數:當Activity結束時resultCode將歸還在onActivityResult()中,一般為RESULT_CANCELED , RESULT_OK。
第二個參數:一個Intent對象,返回給父Activity的資料。
本執行個體一共有三個Activity。點擊飛往火星跳轉到otherActivity,把地球帶給火星的訊息顯示在otherActivity中。點擊返回地球時把火星帶給地球的訊息傳到主Activity.
同理:
點擊飛往月球跳轉到thirdActivity,把地球帶給月球的訊息顯示在thirdActivity中。點擊返回地球時把月球帶給地球的訊息傳到主Activity.
具體實現:
主Activity:
package xiaosi.onActivityResult;</p><p>import android.app.Activity;<br />import android.content.Intent;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.view.View.OnClickListener;<br />import android.widget.Button;<br />import android.widget.TextView;</p><p>public class OnActivityResultActivity extends Activity<br />{<br />private Buttonbutton= null;<br />private Buttonbutton1= null;<br />private TextViewtext= null;<br />private static final intMars= 0;<br />private static final intMoon= 1;</p><p>@Override<br />public void onCreate(Bundle savedInstanceState)<br />{<br />super.onCreate(savedInstanceState);<br />setContentView(R.layout.main);<br />text = (TextView) findViewById(R.id.text);<br />button = (Button) findViewById(R.id.button);<br />button.setOnClickListener(new OnClickListener() {<br />@Override<br />public void onClick(View v)<br />{<br />Intent intent = new Intent(OnActivityResultActivity.this, otherActivity.class);<br />String content = "地球來的訊息:你好,我是來自地球上的小老鼠。我好想去你們的火星呀";<br />intent.putExtra("FromEarth", content);<br />startActivityForResult(intent, Mars);<br />}<br />});<br />button1 = (Button) findViewById(R.id.button1);<br />button1.setOnClickListener(new OnClickListener() {<br />@Override<br />public void onClick(View v)<br />{<br />Intent intent = new Intent(OnActivityResultActivity.this, thirdActivity.class);<br />String content = "地球來的訊息:你好,我是來自地球上的小老鼠。我好想去你們月球";<br />intent.putExtra("FromEarth", content);<br />startActivityForResult(intent, Moon);<br />}<br />});<br />}</p><p>@Override<br />protected void onActivityResult(int requestCode, int resultCode, Intent data)<br />{<br />switch (requestCode)<br />{<br />case Mars:<br />Bundle MarsBuddle = data.getExtras();<br />String MarsMessage = MarsBuddle.getString("FromMars");<br />text.setText(MarsMessage);<br />break;<br />case Moon:<br />Bundle MoonBuddle = data.getExtras();<br />String MoonMessage = MoonBuddle.getString("FromMoon");<br />text.setText(MoonMessage);<br />break;<br />}<br />}<br />}<br />
otherActivity:
package xiaosi.onActivityResult;</p><p>import android.app.Activity;<br />import android.content.Intent;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.widget.Button;<br />import android.widget.TextView;</p><p>public class otherActivity extends Activity<br />{<br />private Buttonbutton= null;</p><p>@Override<br />public void onCreate(Bundle savedInstanceState)<br />{<br />super.onCreate(savedInstanceState);<br />setContentView(R.layout.other);<br />Intent EarthIntent = getIntent();<br />String EarthMessage = EarthIntent.getStringExtra("FromEarth");<br />button = (Button) findViewById(R.id.button);<br />button.setOnClickListener(new View.OnClickListener() {<br />@Override<br />public void onClick(View v)<br />{<br />Intent intent = new Intent(otherActivity.this, OnActivityResultActivity.class);<br />String passString = "火星來的訊息:Hello,我是火星的Jack,非常高興你能來火星";<br />intent.putExtra("FromMars", passString);<br />setResult(RESULT_OK, intent);<br />finish();<br />}<br />});<br />TextView textView = (TextView) findViewById(R.id.othertext);<br />textView.setText(EarthMessage);<br />}<br />}<br />
thirdActivity:
package xiaosi.onActivityResult;</p><p>import android.app.Activity;<br />import android.content.Intent;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.widget.Button;<br />import android.widget.TextView;</p><p>public class thirdActivity extends Activity<br />{<br />private Buttonbutton= null;</p><p>@Override<br />public void onCreate(Bundle savedInstanceState)<br />{<br />super.onCreate(savedInstanceState);<br />setContentView(R.layout.third);<br />Intent EarthIntent = getIntent();<br />String EarthMessage = EarthIntent.getStringExtra("FromEarth");<br />button = (Button) findViewById(R.id.button);<br />button.setOnClickListener(new View.OnClickListener() {<br />@Override<br />public void onClick(View v)<br />{<br />Intent intent = new Intent(thirdActivity.this, OnActivityResultActivity.class);<br />String passString = "月球來的訊息:Hello,我是月球的Lucy,非常歡迎你來月球";<br />intent.putExtra("FromMoon", passString);<br />setResult(RESULT_OK, intent);<br />finish();<br />}<br />});<br />TextView textView = (TextView) findViewById(R.id.thirdtext);<br />textView.setText(EarthMessage);<br />}<br />}<br />