2012-12-19 137 views
1

我想将一个对象从一个活动细节发送给人员活动。我跟着教程,但我得到以下错误:我无法将对象从一个活动转移到另一个活动

12-19 08:19:00.434: E/AndroidRuntime(1011): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.workingonlist/com.example.workingonlist.Persons}: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class com.example.workingonlist.Person 

这里是Person模型:

public class Person implements Parcelable { 

    private String name; 
    private String surname; 
    private String gender; 

    public Person() { 
     // TODO Auto-generated constructor stub 
    } 

    public Person(Parcel in){ 
     name= in.readString(); 
     surname= in.readString(); 
     gender= in.readString(); 
    } 

    public Person(String name,String surname,String gender){ 
     this.name=name; 
     this.surname=surname; 
     this.gender=gender; 
    } 

     // getters and setters 

    @Override 
    public int describeContents() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeString(name); 
     dest.writeString(surname); 
     dest.writeString(gender); 
    } 

    private Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() { 

     @Override 
     public Person createFromParcel(Parcel source) { 
      // TODO Auto-generated method stub 
      return new Person(source); 
     } 

     @Override 
     public Person[] newArray(int size) { 
      // TODO Auto-generated method stub 
      return new Person[size]; 
     } 

    }; 
} 

这是详细的活动,我想送Person对象。

private View.OnClickListener onClick = new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     if(v.getId()==btn_save.getId()){ 
      Person p = new Person(); 
      p.setName(et_name.getText().toString()); 
      p.setSurname(et_surname.getText().toString()); 


      switch(rg.getCheckedRadioButtonId()){ 
       case R.id.button1:{ 
        p.setGender("Male"); 
        break; 
       } 
       case R.id.button2:{ 
        p.setGender("Female"); 
        break; 
       } 
      } 

      Intent i = new Intent(Details.this,Persons.class); 
      i.putExtra("person",p); 
      startActivity(i); 
     } 
    } 
}; 

这里是我想获取Person对象的Persons活动。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    PersonAdapter adapter = new PersonAdapter(); 

    setContentView(R.layout.persons); 
    Bundle b = getIntent().getExtras(); 
    if (b != null) { 
     Person p = b.getParcelable("person"); 
     adapter.add(p); 
    } 

    setListAdapter(adapter); 
} 

我能为了解决这个问题呢?任何帮助表示感谢。提前感谢。

+0

[Bad Parcelable exception]的可能重复(http://stackoverflow.com/questions/12348627/bad-parcelable-exception) –

回答

4

你需要设置你的CREATOR公共静态决赛:

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() 
+0

非常感谢,感谢您的帮助:) –

0

出于某种原因,我不能添加对Festus Tamakloe的回答发表评论,但我只想补充说这对我有帮助。我正在使用一些使用静态创建器的教程。我没有“公开”!

所以请确保你有公开。

相关问题