Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android getParcelableArrayListExtra问题。程序崩溃_Android_Android Activity_Arraylist - Fatal编程技术网

Android 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>

我试图将一个对象的arraylist传递给一个新的活动,我遵循了一个教程,看起来我做的一切都是对的,但是我的程序不断崩溃。我已经注释掉了大部分代码,以隔离导致崩溃的代码行和问题所在的getParcelableArrayListExtra位。有人能帮忙吗

新活动:

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];
}