使用以下URL 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.v
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(); }
您正在从包中读取,但实际上并未将信息分配给变量.