首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Activity 间传接对象, 采用Parcelable

2012-06-30 
Activity 间传递对象, 采用Parcelableandroid提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后

Activity 间传递对象, 采用Parcelable
android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。 除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。

Parcelable实现要点:需要实现三个东西

writeToParcel 方法。该方法将类的数据写入外部提供的Parcel中.声明如下:import com.iaiai; import android.content.Intent; import android.os.Bundle; import android.os.Parcelable; /** * * <p> * Title: Test.java * </p> * <p> * E-Mail: 176291935@qq.com * </p> * <p> * QQ: 176291935 * </p> * <p> * Http: iaiai.iteye.com * </p> * <p> * Create time: 2011-7-21 * </p> * * @author 丸子 * @version 0.0.1 */public class Test extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent i = getIntent(); Person p = i.getParcelableExtra("yes"); System.out.println("---->"+p.name); System.out.println("---->"+p.map.size()); } }

发送的Activity

import com.iaiai;     import android.app.Activity;   import android.content.Intent;   import android.os.Bundle;   /** *  * <p> * Title: TestNew.java * </p> * <p> * E-Mail: 176291935@qq.com * </p> * <p> * QQ: 176291935 * </p> * <p> * Http: iaiai.iteye.com * </p> * <p> * Create time: 2011-7-21 * </p> *  * @author 丸子 * @version 0.0.1 */public class TestNew extends Activity {             @Override      public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.main);           Intent intent = new Intent();           Person p = new Person();           p.map = new HashMap<String,String>();           p.map.put("yes", "ido");           p.name="ok";           intent.putExtra("yes", p);           intent.setClass(this, Test.class);           startActivity(intent);       }   }


Parcelable的实现类
import java.util.HashMap;   import android.os.Parcel;   import android.os.Parcelable;   /** *  * <p> * Title: Person.java * </p> * <p> * E-Mail: 176291935@qq.com * </p> * <p> * QQ: 176291935 * </p> * <p> * Http: iaiai.iteye.com * </p> * <p> * Create time: 2011-7-21 * </p> *  * @author 丸子 * @version 0.0.1 */public class Person implements Parcelable {         public HashMap<String,String> map = new HashMap<String,String> ();              public String name ;       @Override      public int describeContents() {           return 0;       }         @Override      public void writeToParcel(Parcel dest, int flags) {             dest.writeMap(map);           dest.writeString(name);       }       public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {   //重写Creator          @Override          public Person createFromParcel(Parcel source) {               Person p = new Person();               p.map=source.readHashMap(HashMap.class.getClassLoader());               p.name=source.readString();               return p;           }             @Override          public Person[] newArray(int size) {               // TODO Auto-generated method stub               return null;           }       };     }

热点排行