2011年8月10日 星期三

多個Activity之間藉著Boundle物件傳值

Jimmy's papa覺得Android系統很像個後台有各種專職人員可提供使用者包山包海的服務,但前台的服務櫃台卻空間狹小的一次只能容身一個服務員面對使用者,為了確保服務品質不跳針,當各種專職Activity物件輪流上台時,就得藉由Boundle物件紀錄各項交辦事項

以下是Jimmy's papa將如何以Boundle物件在多個Activity之間傳值的寫法做個小整理

<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
      package="com.jimmyscratchlab.蟹堡王"  
      android:versionCode="1"  
      android:versionName="1.0">  
    <application android:icon="@drawable/icon" android:label="@string/app_name">  
        <activity android:name=".收銀員章魚哥"  
                  android:label="@string/app_name">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
          
        <activity android:name=".神廚海綿寶寶"></activity>  
    </application>  
    <uses-sdk android:minSdkVersion="3" />  
</manifest>   
package com.jimmyscratchlab.蟹堡王;  
  
import android.app.Activity;  
import android.content.Intent;  
import android.os.Bundle;  
import android.view.MotionEvent;  
   
public class 收銀員章魚哥 extends Activity {  //Squidward
    
    private int requestCode = 110;
    
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
    }  
      
    public boolean onTouchEvent(MotionEvent event) {  
        Intent intent = new Intent();  
        intent.setClass(收銀員章魚哥.this, 神廚海綿寶寶.class);  
        Bundle mBundle = new Bundle();  
        mBundle.putInt("Petty", 5);//寫入蟹堡數量
        intent.putExtras(mBundle);  
    startActivityForResult(intent, requestCode);
        finish();  
        return super.onTouchEvent(event);  
    }
  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // 確認回傳的requestCode和resultCode
    if (requestCode == this.requestCode) {
        if (resultCode == RESULT_OK) {
            //do something..........        
        }
    }

    }    
}  

package com.jimmyscratchlab.蟹堡王;   
  
import android.app.Activity;  
import android.os.Bundle;  
  
public class 神廚海綿寶寶 extends Activity{  //SpongeBob
      
    public void onCreate(Bundle savedInstanceState) {  
       super.onCreate(savedInstanceState);  
       setContentView(R.layout.main);  
       Bundle bundle = getIntent().getExtras();    
       Int petty=bundle.getInt("Petty");//讀出蟹堡數量  
       setTitle("感謝您!!!我親愛的的客人,我小神廚馬上現場製作"+petty+"個油滋滋的美味蟹堡"!!!);
       bundle.putString("toSquidward", "章魚哥,記得給客人一個笑臉,這樣客人才有美好的一天呦!!!");
       intent.putExtras(bundle);
       setResult(RESULT_OK, intent);
       finish();
    }  
}  

沒有留言:

張貼留言