Android getParcelableArrayListExtra问题。程序崩溃
我试图将一个对象的arraylist传递给一个新的活动,我遵循了一个教程,看起来我做的一切都是对的,但是我的程序不断崩溃。我已经注释掉了大部分代码,以隔离导致崩溃的代码行和问题所在的getParcelableArrayListExtra位。有人能帮忙吗 新活动:Android getParcelableArrayListExtra问题。程序崩溃,android,android-activity,arraylist,Android,Android Activity,Arraylist,我试图将一个对象的arraylist传递给一个新的活动,我遵循了一个教程,看起来我做的一切都是对的,但是我的程序不断崩溃。我已经注释掉了大部分代码,以隔离导致崩溃的代码行和问题所在的getParcelableArrayListExtra位。有人能帮忙吗 新活动: public class DatabaseSearch extends ListActivity{ DBAdapter db = new DBAdapter(this); ArrayList<String>
public class DatabaseSearch extends ListActivity{
DBAdapter db = new DBAdapter(this);
ArrayList<String> listrecipes = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.databasesearch);
Intent i = getIntent();
if (i != null) {
ArrayList<mydata> data = i.getParcelableArrayListExtra ("com.example.MyPantry.array");
}
}
}
我要传递的数组中的对象--
最后我有一节课,教程指导我做的
public class MyCreator implements Parcelable.Creator<mydata> {
@Override
public mydata createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new mydata(source);
}
@Override
public mydata[] newArray(int arg0) {
// TODO Auto-generated method stub
return new mydata[arg0];
}
公共类MyCreator实现Parcelable.Creator{
@凌驾
公共mydata createFromParcel(地块源){
//TODO自动生成的方法存根
返回新的mydata(源);
}
@凌驾
公共mydata[]新数组(int arg0){
//TODO自动生成的方法存根
返回新的mydata[arg0];
}
}
所以,我知道这是一个相当多的看,但我只是试图彻底。这个问题开始出现在新活动中的if语句中。在意图之间传递数据时,您可以将类标记为可序列化(通过实现可序列化标记接口),并将它们作为附加项直接添加到意图中,而无需使用parcelable完成所有这些工作(实际上,只有绑定到服务时才需要parcelable)
很难说为什么在没有看到堆栈跟踪或mydata构造函数的情况下出现错误,mydata构造函数使用Parcelable填充类。我宁愿始终使用Parcelable,这是Android优化的实现序列化的方法。是的,很难实现,但比Serializable更快。代码越仔细,越容易出错ss运行时环境需要处理才能运行。
public class mydata implements Parcelable {
private int recipeID;
private int ingredientID;
private String check = "unchecked";
private int percentage = 0;
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel data, int flags) {
// TODO Auto-generated method stub
data.writeInt(recipeID);
data.writeInt(ingredientID);
data.writeString(check);
data.writeInt(percentage);
}
//Other functions
}
public class MyCreator implements Parcelable.Creator<mydata> {
@Override
public mydata createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new mydata(source);
}
@Override
public mydata[] newArray(int arg0) {
// TODO Auto-generated method stub
return new mydata[arg0];
}