zoukankan      html  css  js  c++  java
  • Android Bundle类别

    即使在今天发现自己Bundle类不明确。因此,花时间去研究了一下。

    依据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类

    Bundle mBundle = new Bundle(); 
    (2)bundle类中增加数据(key -value的形式,还有一个activity里面取数据的时候,就要用到key,找出相应的value)

    mBundle.putString("Data", "data from TestBundle");

    (3)新建一个intent对象,并将该bundle增加这个intent对象

    Intent intent = new Intent();  
    intent.setClass(TestBundle.this, Target.class);  
    intent.putExtras(mBundle);
    完整代码例如以下:

    android mainfest.xml例如以下:

    <?

    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类:

    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

    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);  
            Bundle bundle = getIntent().getExtras();    //得到传过来的bundle
            String data = bundle.getString("Data");//读出数据  
            setTitle(data);  
    
        }  
    }  
    

    布局文件:

    main.xml

    <?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
    <?

    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

    <?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>
    

    结果:


    跳转结果:



  • 相关阅读:
    Java 简单算法--打印乘法口诀(只使用一次循环)
    Java简单算法--求100以内素数
    ubuntu 16.04 chrome flash player 过期
    java 网络API访问 web 站点
    java scoket (UDP通信模型)简易聊天室
    leetcode1105 Filling Bookcase Shelves
    leetcode1140 Stone Game II
    leetcode1186 Maximum Subarray Sum with One Deletion
    leetcode31 Next Permutation
    leetcode834 Sum of Distances in Tree
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4595596.html
Copyright © 2011-2022 走看看