Android進階2之Activity之間資料交流(onActivityResult的用法)

來源:互聯網
上載者:User

主要功能:

在一個主介面(主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 />





相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.