How to send an object from one Android Activity to another using Intents?
我已经做了如下样本申请
ScrollvIEw1.java
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 ScrollvIEw1 extends Activity { static int i; /** Called when the activity is first created. */ @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); button b = (button)findVIEwByID(R.ID.button01); b.setonClickListener(new OnClickListener(){ public voID onClick(VIEw v) { Intent i = new Intent(ScrollvIEw1.this,Result.class); name n = new name(); n.setI(20); n.setS1("Hello"); n.setS2("World"); i.putExtra("name",n); startActivity(i); } }); }}
//name.java
import androID.os.Parcel;import androID.os.Parcelable;public class name implements Parcelable{ int i; String s1; String s2; public name(){ } private name(Parcel in){ in.readInt(); in.readString(); } public int getI() { return i; } public voID setI(int i) { this.i = i; } public String getS1() { return s1; } public voID setS1(String s) { this.s1 = s; } public String getS2() { return s2; } public voID setS2(String s) { this.s2 = s; } public int describeContents() { return 0; } public voID writetoParcel(Parcel dest,int flags) { dest.writeInt(i); dest.writeString(s1); dest.writeString(s2); } public static final name.Creator<name> CREATOR = new name.Creator<name>() { public name createFromParcel(Parcel in) { return new name(in); } public name[] newArray(int size) { return new name[size]; } }; }
//Result.java
import androID.app.Activity;import androID.os.Bundle;public class Result extends Activity{ @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); name a = (name)getIntent().getParcelableExtra("name"); System.out.println("Int : "+a.getI()); System.out.println("String : "+a.getS1()); System.out.println("String : "+a.getS2()); }}
但是Result类I变为null.怎么了?
解决方法 在:private name(Parcel in){ in.readInt(); in.readString();}
您正在从包中读取,但实际上并未将信息分配给变量.
总结以上是内存溢出为你收集整理的android – 如何使用Intent.putExtra和Parcel将对象从一个Activity发送到另一个Activity?全部内容,希望文章能够帮你解决android – 如何使用Intent.putExtra和Parcel将对象从一个Activity发送到另一个Activity?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)