日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Bundle类 学习总结

發布時間:2025/4/14 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Bundle类 学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android Bundle類

http://blog.csdn.net/randyjiawenjie/article/details/6651437


根據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


兩個activity之間的通訊可以通過bundle類來實現,做法就是:


(1)新建一個bundle類


[java] view plain copy
Bundle mBundle = new Bundle(); ??
(2)bundle類中加入數據(key -value的形式,另一個activity里面取數據的時候,就要用到key,找出對應的value)
[java] view plain copy
mBundle.putString("Data", "data from TestBundle"); ?


(3)新建一個intent對象,并將該bundle加入這個intent對象
[cpp] view plain copy
Intent intent = new Intent(); ? ?
intent.setClass(TestBundle.this, Target.class); ? ?
intent.putExtras(mBundle); ?
完整代碼如下:
android mainfest.xml如下:


[java] view plain copy
<?xml version="1.0" encoding="utf-8"?> ?
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ?
? ? ? package="com.tencent.test" ?
? ? ? android:versionCode="1" ?
? ? ? android:versionName="1.0"> ?
? ? <application android:icon="@drawable/icon" android:label="@string/app_name"> ?
? ? ? ? <activity android:name=".TestBundle" ?
? ? ? ? ? ? ? ? ? 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=".Target"></activity> ?
? ? </application> ?
? ? <uses-sdk android:minSdkVersion="7" /> ?
</manifest> ??


兩個類如下:intent從TestBundle類發起,到Target類。
類1:TestBundle類:


[java] view plain copy
import android.app.Activity; ? ?
import android.content.Intent; ? ?
import android.os.Bundle; ? ?
import android.view.View; ?
import android.view.View.OnClickListener; ?
import android.widget.Button; ?
??
public class TestBundle extends Activity { ? ?
? ? ??
? ? private Button button1; ?
? ? private OnClickListener cl; ??
? ? public void onCreate(Bundle savedInstanceState) { ? ?
? ? ? ? super.onCreate(savedInstanceState); ? ?
? ? ? ? setContentView(R.layout.main); ?
? ? ? ? ??
? ? ? ? button1 = (Button) findViewById(R.id.button1); ?
? ? ? ? cl = new OnClickListener(){ ?
? ? ? ? ? ? @Override ?
? ? ? ? ? ? public void onClick(View arg0) { ?
? ? ? ? ? ? ? ? // TODO Auto-generated method stub ?
? ? ? ? ? ? ? ? Intent intent = new Intent(); ? ?
? ? ? ? ? ? ? ? intent.setClass(TestBundle.this, Target.class); ? ?
? ? ? ? ? ? ? ? Bundle mBundle = new Bundle(); ? ?
? ? ? ? ? ? ? ? mBundle.putString("Data", "data from TestBundle");//壓入數據 ? ?
? ? ? ? ? ? ? ? intent.putExtras(mBundle); ? ?
? ? ? ? ? ? ? ? startActivity(intent); ?
? ? ? ? ? ? } ?
? ? ? ? }; ?
? ? ? ? button1.setOnClickListener(cl); ?
? ? } ?
} ? ?


類2: Target
[java] view plain copy
import android.app.Activity; ? ?
import android.os.Bundle; ? ?
??
public class Target extends Activity{ ? ?
??
? ? public void onCreate(Bundle savedInstanceState) { ? ?
? ? ? ? ??
? ? ? ? super.onCreate(savedInstanceState); ? ?
? ? ? ? setContentView(R.layout.target); ? ?
? ? ? ? <span style="color:#ff6600;">Bundle bundle = getIntent().getExtras(); ? </span> //得到傳過來的bundle ?
? ? ? ? String data = bundle.getString("Data");//讀出數據 ? ?
? ? ? ? setTitle(data); ? ?
??
? ? } ? ?
} ? ?


布局文件:
main.xml


[java] view plain copy
<?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" ?
? ? > ?
<TextView ? ?
? ? android:layout_width="fill_parent" ??
? ? android:layout_height="wrap_content" ??
? ? android:text="@string/hello" ?
? ? /> ?
<Button ? ?
? ? android:layout_width="fill_parent" ??
? ? android:layout_height="wrap_content" ??
? ? android:text="@string/button" ?
? ? android:id = "@+id/button1" ?
? ? /> ??
</LinearLayout> ?


target.xml
[java] view plain copy
<?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" ?
? ? > ?
<TextView ? ?
? ? android:layout_width="fill_parent" ??
? ? android:layout_height="wrap_content" ??
? ? android:text="@string/target" ?
? ? /> ?
</LinearLayout> ?


String.xml


[java] view plain copy
<?xml version="1.0" encoding="utf-8"?> ?
<resources> ?
? ? <string name="hello">Hello World, TestBundle!</string> ?
? ? <string name="app_name">測試Bundle用法</string> ?
? ? <string name="button">點擊跳轉</string> ?
? ? <string name="target">來到target activity</string> ?
</resources> ?


結果:


跳轉結果:
========

Android中Bundle的使用

http://blog.sina.com.cn/s/blog_a364999b01017i2z.html


? ? SDK里是這樣描述:A mapping from String values to various Parcelable types。它幫助我將數據打包傳入intent里面,為使用這些數據提供了便利。


java代碼:


protected void onListItemClick (ListView l, View v, int position, long id)
{
super.onListItemClick(l, v, position, id);


//獲得選中項的HashMap對象?
HashMap map=(HashMap)lv.getItemAtPosition(position);
String Type=map.get("Type");?
Intent i=new Intent(this,title.class);
Bundle mBundle=new Bundle();
mBundle.putString("type", Type);
i.putExtras(mBundle);
startActivity(i);
}


復制代碼


? ? ? ?1、實例化Bundle 一個對象,用putString(標記,數據)來將數據導入到Bundle對象中;  2、然后將Bundle對象導入到Intent對象中;
  3、Intent啟動另一個activity。


  從intent中讀出需要的數據:


java代碼:
bundle = getIntent().getExtras();?
if(bundle!=null)
Type=bundle.getString("type");
if(Type!=null)?
//從數據庫依據所選類型讀出 文章的Title,保存在cur中?
cur=myDBadapter.getTitle(new String[]{Type});
復制代碼


? ? ? ?4、Bundle對象可以從activity.getIntent().getExtras()中返回。 可見,啟動當前activity 的Intent對象是由getIntent()來找到的。
  5、通過Bundle的getString()方法,就可以讀出所要的數據。


  這就是Bundle的經典用法,包裹數據放入Intent中,目的在于傳輸數據。
========

Android中的Bundle的具體使用

http://txlong-onz.iteye.com/blog/934960
?
一、API文檔說明
  1.介紹
    用于不同Activity之間的數據傳遞
  1.重要方法
    clear():清除此Bundle映射中的所有保存的數據。
    clone():克隆當前Bundle
    containsKey(String key):返回指定key的值
    getString(String key):返回指定key的字符
    hasFileDescriptors():指示是否包含任何捆綁打包文件描述符
    isEmpty():如果這個捆綁映射為空,則返回true
    putString(String key, String value):插入一個給定key的字符串值
    readFromParcel(Parcel parcel):讀取這個parcel的內容
    remove(String key):移除指定key的值
    writeToParcel(Parcel parcel, int flags):寫入這個parcel的內容
二、實例
Java代碼 ?收藏代碼
public class BundleDemo extends Activity { ?
? ? private EditText etName; ?
? ? Button btn; ?
??
? ? /*?
? ? * (non-Javadoc)?
? ? * @see android.app.Activity#onCreate(android.os.Bundle)?
? ? */ ?
? ? @Override ?
? ? protected void onCreate(Bundle savedInstanceState) { ?
? ? ? ? // TODO Auto-generated method stub ?
? ? ? ? super.onCreate(savedInstanceState); ?
? ? ? ? setContentView(R.layout.bundle); ?
? ? ? ? ??
? ? ? ? etName = (EditText) findViewById(R.id.etname); ?
? ? ? ? btn = (Button) findViewById(R.id.btn); ?
? ? ? ? ??
? ? ? ? btn.setOnClickListener(new OnClickListener() { ?
? ? ? ? ? ? @Override ?
? ? ? ? ? ? public void onClick(View v) { ?
? ? ? ? ? ? ? ? String info = etName.getText().toString(); ?
? ? ? ? ? ? ? ? Bundle bundle = new Bundle(); ?
??
? ? ? ? ? ? ? ?   //保存輸入的信息 ?
? ? ? ? ? ? ? ? bundle.putString("name", info); ?
? ? ? ? ? ? ? ? Intent intent=new Intent(BundleDemo.this,BundleDemo1.class); ?
? ? ? ? ? ? ? ? intent.putExtras(bundle); ?
? ? ? ? ? ? ? ? finish(); ?
? ? ? ? ? ? ? ? startActivity(intent); ?
? ? ? ? ? ? } ?
? ? ? ? }); ?
? ? } ?
} ?
?
?
Java代碼 ?收藏代碼
public class BundleDemo1 extends Activity { ?
? ? private TextView etName; ?
? ? /* (non-Javadoc)?
? ? * @see android.app.Activity#onCreate(android.os.Bundle)?
? ? */ ?
? ? @Override ?
? ? protected void onCreate(Bundle savedInstanceState) { ?
? ? ? ? // TODO Auto-generated method stub ?
? ? ? ? super.onCreate(savedInstanceState); ?
? ? ? ? setContentView(R.layout.b1); ?
??
? ? ? ? etName=(TextView)findViewById(R.id.txtname); ?
? ? ? ? Bundle b=getIntent().getExtras(); ?
? ? ? ? //獲取Bundle的信息 ?
? ? ? ? String info=b.getString("name"); ?
? ? ? ? etName.setText("您的姓名:"+info); ?
? ? } ?
} ?
?三、與SharedPreferences的區別
  SharedPreferences是簡單的存儲持久化的設置,就像用戶每次打開應用程序時的主頁,它只是一些簡單的鍵值對來操作。它將數據保存在一個xml文件中
  Bundle是將數據傳遞到另一個上下文中或保存或回復你自己狀態的數據存儲方式。它的數據不是持久化狀態。
========

總結

以上是生活随笔為你收集整理的Android Bundle类 学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。