使用Bunble在Activity之間交換數據

轉自:http://blog.csdn.net/wangyang2698341/article/details/8221247 

 bundle:

一種存放字符串和Parcelable類型數據的map類型的容器類,通過存放數據鍵(key)獲取對應的各種類型的值(value),而且必須通過鍵(key)獲取。

根據google官方的文檔(http://developer.android.com/reference/android/os/Bundle.html

Bundle類是一個key-value對,“A mapping from String values to various Parcelable types.

類繼承關係:

java.lang.Object
     android.os.Bundle

Bundle類是一個final類:
public final class
Bundle
extends Objectimplements Parcelable Cloneable


bundle的用法:

       Bundle相當於Map類,就是一個映射,用Bundle綁定數據,便於數據處理

        它主要作用於Activity之間的數據傳遞. 

 

//TestBundle.java
Bundle bundle = new Bundle();//創建一個句柄
bundle.putString("name", nameinfo);//將nameinfo填充入句柄
Intent mIntent = new Intent(TestBundle.this,TestBundle_getvalue.class);
mIntent.putExtras(bundle);
startActivity(mIntent);
 
//TestBundle_getvalue.java
Bundle bundle = getIntent().getExtras();//獲取一個句柄
String nameString=bundle.get("name");//通過key爲“name”來獲取value即 nameString.
/*
*進行相關操作
*/


 

bundle的實例:

      第一個Activity發出參數!

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.MotionEvent; 

public class TestBundle extends Activity { 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
} 

public boolean onTouchEvent(MotionEvent event) { 
Intent intent = new Intent(); 
intent.setClass(TestBundle.this, Target.class); 
Bundle mBundle = new Bundle(); 
mBundle.putString("Data", "hello, bear");//壓入數據 
intent.putExtras(mBundle); 
startActivity(intent); 
finish(); 
return super.onTouchEvent(event); 
} 
} 


第二個Activity,接收參數

import android.app.Activity; 
import android.os.Bundle; 

public class Target extends Activity{ 

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
Bundle bundle = getIntent().getExtras(); 
String data=bundle.getString("Data");//讀出數據 
setTitle(data); 
} 
}



另外onCreate(Bundle savedInstanceState) 中的savedInstanceState用於當前activity被切換之前保存臨時數據,以便在下次返回時顯示之前的數據的。因此在想使用Bundle savedInstanceState保存臨時數據,就應該在onCreate(Bundle savedInstanceState)方法中提前寫好savedInstanceState!=null時的邏輯。參照理解:http://blog.sina.com.cn/s/blog_652dd96d0100ug6h.html



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章