Java 获取在NullPointerException中返回的getParcelableArrayListExtra?

Java 获取在NullPointerException中返回的getParcelableArrayListExtra?,java,android,android-intent,nullpointerexception,parcel,Java,Android,Android Intent,Nullpointerexception,Parcel,可包裹类别为: package mobile.bh.classes; import java.util.List; import mobile.bh.activities.MethodStep; import android.content.Context; import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcelable; //simple class that just has

可包裹类别为:

 package mobile.bh.classes;

import java.util.List;

import mobile.bh.activities.MethodStep;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Parcel;
import android.os.Parcelable;

//simple class that just has one member property as an example
public class Recipe implements Parcelable {
    public int id;
    public String name;
    public List<Ingredient> ingredients;
    public List<MethodStep> method;
    public String comment;
    public String image;
    public Bitmap image2;
    Context mContext;



    public Recipe(Context c){
        mContext = c;
    }
    /* everything below here is for implementing Parcelable */

    // 99.9% of the time you can just ignore this
    public int describeContents() {
        return 0;
    }

    // write your object's data to the passed-in Parcel
    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(id);
        out.writeString(name);
        out.writeTypedList(ingredients);
        out.writeTypedList(method);
        out.writeString(comment);
        out.writeString(image);
    }

    // this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods
    public static final Parcelable.Creator<Recipe> CREATOR = new Parcelable.Creator<Recipe>() {
        public Recipe createFromParcel(Parcel in) {
            return new Recipe(in);
        }

        public Recipe[] newArray(int size) {
            return new Recipe[size];
        }
    };

    // example constructor that takes a Parcel and gives you an object populated with it's values
    private Recipe(Parcel in) {
        id = in.readInt();
        name =in.readString();
        in.readTypedList(ingredients, Ingredient.CREATOR);
        in.readTypedList(method, MethodStep.CREATOR);
        comment = in.readString();
        image = in.readString();
    }

}
package mobile.bh.classes;
导入java.util.List;
导入mobile.bh.activities.MethodStep;
导入android.content.Context;
导入android.graphics.Bitmap;
导入android.os.packet;
导入android.os.Parcelable;
//例如,仅具有一个成员属性的简单类
公共类Recipe实现了Parcelable{
公共int id;
公共字符串名称;
公开成分清单;
公开列表法;
公共字符串评论;
公共字符串图像;
公共位图图像2;
语境;
公共配方(上下文c){
mContext=c;
}
/*下面的所有内容都是为了实现Parcelable*/
//99.9%的时候你可以忽略这一点
公共int描述内容(){
返回0;
}
//将对象的数据写入传入的地块
公共无效写入包(包出,内部标志){
out.writeInt(id);
out.writeString(名称);
out.书面材料清单(成分);
out.writeTypedList(方法);
外写(评论);
out.writeString(图像);
}
//这用于重新生成对象。所有地块都必须有一个实现这两种方法的创建者
public static final Parcelable.Creator=新建Parcelable.Creator(){
公共配方createFromParcel(地块中){
返回新配方(in);
}
公共配方[]新数组(整数大小){
返回新配方[尺寸];
}
};
//示例构造函数,它获取地块并为您提供一个填充了其值的对象
私人配方(包裹内){
id=in.readInt();
name=in.readString();
in.readTypedList(配料、配料、创建者);
in.readTypedList(方法,MethodStep.CREATOR);
comment=in.readString();
image=in.readString();
}
}
通过如下意图发送数据:

            Intent i = new Intent(context,RecipeInfoActivity.class);
        ArrayList<Recipe> dataList = new ArrayList<Recipe>();
        dataList.add(recipe);
        i.putParcelableArrayListExtra("recipeObj", dataList);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
Intent i=新的Intent(上下文,RecipeInfo活动.class);
ArrayList dataList=新的ArrayList();
添加(配方);
i、 putParcelableArrayListExtra(“recipeObj”,数据列表);
i、 设置标志(意图、标志、活动、新任务);
背景。起始触觉(i);
并在另一端接收数据,这使得NullPointerExceotion

    ArrayList<Recipe> p =  getIntent().getParcelableArrayListExtra("recipeObj");
ArrayList p=getIntent().getParcelableArrayListExtra(“recipeObj”);
LogCat输出:

08-24 16:37:51.172: E/AndroidRuntime(976): FATAL EXCEPTION: main
08-24 16:37:51.172: E/AndroidRuntime(976): java.lang.RuntimeException: Unable to start activity ComponentInfo{mobile.bh/mobile.bh.activities.RecipeInfoActivity}: java.lang.NullPointerException
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.os.Looper.loop(Looper.java:123)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.app.ActivityThread.main(ActivityThread.java:4627)
08-24 16:37:51.172: E/AndroidRuntime(976):  at java.lang.reflect.Method.invokeNative(Native Method)
08-24 16:37:51.172: E/AndroidRuntime(976):  at java.lang.reflect.Method.invoke(Method.java:521)
08-24 16:37:51.172: E/AndroidRuntime(976):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-24 16:37:51.172: E/AndroidRuntime(976):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-24 16:37:51.172: E/AndroidRuntime(976):  at dalvik.system.NativeStart.main(Native Method)
08-24 16:37:51.172: E/AndroidRuntime(976): Caused by: java.lang.NullPointerException
08-24 16:37:51.172: E/AndroidRuntime(976):  at mobile.bh.classes.Recipe.<init>(Recipe.java:59)
08-24 16:37:51.172: E/AndroidRuntime(976):  at mobile.bh.classes.Recipe.<init>(Recipe.java:56)
08-24 16:37:51.172: E/AndroidRuntime(976):  at mobile.bh.classes.Recipe$1.createFromParcel(Recipe.java:47)
08-24 16:37:51.172: E/AndroidRuntime(976):  at mobile.bh.classes.Recipe$1.createFromParcel(Recipe.java:1)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.os.Parcel.readParcelable(Parcel.java:1906)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.os.Parcel.readValue(Parcel.java:1771)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.os.Parcel.readListInternal(Parcel.java:2017)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.os.Parcel.readArrayList(Parcel.java:1461)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.os.Parcel.readValue(Parcel.java:1792)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.os.Parcel.readMapInternal(Parcel.java:2008)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.os.Bundle.unparcel(Bundle.java:208)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.os.Bundle.getParcelableArrayList(Bundle.java:1144)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.content.Intent.getParcelableArrayListExtra(Intent.java:3424)
08-24 16:37:51.172: E/AndroidRuntime(976):  at mobile.bh.activities.RecipeInfoActivity.onCreate(RecipeInfoActivity.java:56)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-24 16:37:51.172: E/AndroidRuntime(976):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
08-24 16:37:51.172: E/AndroidRuntime(976):  ... 11 more
08-24 16:37:51.172:E/AndroidRuntime(976):致命异常:main
08-24 16:37:51.172:E/AndroidRuntime(976):java.lang.RuntimeException:无法启动活动组件信息{mobile.bh/mobile.bh.activities.RecipeInfo活动}:java.lang.NullPointerException
08-24 16:37:51.172:E/AndroidRuntime(976):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
08-24 16:37:51.172:E/AndroidRuntime(976):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-24 16:37:51.172:E/AndroidRuntime(976):在android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-24 16:37:51.172:E/AndroidRuntime(976):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-24 16:37:51.172:E/AndroidRuntime(976):在android.os.Handler.dispatchMessage(Handler.java:99)上
08-24 16:37:51.172:E/AndroidRuntime(976):在android.os.Looper.loop(Looper.java:123)
08-24 16:37:51.172:E/AndroidRuntime(976):位于android.app.ActivityThread.main(ActivityThread.java:4627)
08-24 16:37:51.172:E/AndroidRuntime(976):位于java.lang.reflect.Method.Invokenactive(本机方法)
08-24 16:37:51.172:E/AndroidRuntime(976):位于java.lang.reflect.Method.invoke(Method.java:521)
08-24 16:37:51.172:E/AndroidRuntime(976):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-24 16:37:51.172:E/AndroidRuntime(976):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-24 16:37:51.172:E/AndroidRuntime(976):在dalvik.system.NativeStart.main(本机方法)
08-24 16:37:51.172:E/AndroidRuntime(976):由以下原因引起:java.lang.NullPointerException
08-24 16:37:51.172:E/AndroidRuntime(976):at mobile.bh.classes.Recipe.(Recipe.java:59)
08-24 16:37:51.172:E/AndroidRuntime(976):at mobile.bh.classes.Recipe.(Recipe.java:56)
08-24 16:37:51.172:E/AndroidRuntime(976):在mobile.bh.classes.Recipe$1.createFromParcel(Recipe.java:47)
08-24 16:37:51.172:E/AndroidRuntime(976):在mobile.bh.classes.Recipe$1.createFromParcel(Recipe.java:1)
08-24 16:37:51.172:E/AndroidRuntime(976):在android.os.Parcel.readParcelable(Parcel.java:1906)
08-24 16:37:51.172:E/AndroidRuntime(976):在android.os.Parcel.readValue(Parcel.java:1771)上
08-24 16:37:51.172:E/AndroidRuntime(976):在android.os.Parcel.readListInternal(Parcel.java:2017)上
08-24 16:37:51.172:E/AndroidRuntime(976):在android.os.Parcel.readArrayList(Parcel.java:1461)上
08-24 16:37:51.172:E/AndroidRuntime(976):在android.os.Parcel.readValue(Parcel.java:1792)上
08-24 16:37:51.172:E/AndroidRuntime(976):在android.os.Parcel.readMapInternal(Parcel.java:2008)上
08-24 16:37:51.172:E/AndroidRuntime(976):在android.os.Bundle.unparcel(Bundle.java:208)上
08-24 16:37:51.172:E/AndroidRuntime(976):位于android.os.Bundle.getParcelableArrayList(Bundle.java:1144)
08-24 16:37:51.172:E/AndroidRuntime(976):在android.content.Intent.getParcelableArrayListExtra(Intent.java:3424)
08-24 16:37:51.172:E/AndroidRuntime(976):在mobile.bh.activities.RecipeInfoActivity.onCreate(RecipeInfoActivity.java:56)
08-24 16:37:51.172:E/AndroidRuntime(976):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-24 16:37:51.172:E/AndroidRuntime(976):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
2008-24 16:37:51.172:E/AndroidRuntime(976):。。。还有11个

这就是我如何用我的
列表实现
包裹的方法:

public String tag;
public int success;
public int error;
public User user;
public Event event;
public String error_message;    
public List<Event> finishedevents;
public List<Leadevent> leaderboard; 
public List<User> user_search;

public void readFromParcel(Parcel in) {
    tag = in.readString();
    success = in.readInt();
    error = in.readInt();
    user = (User) in.readValue(User.class.getClassLoader());
    event = (Event) in.readValue(Event.class.getClassLoader());
    finishedevents = (ArrayList<Event>) in.readSerializable();
    leaderboard = (ArrayList<Leadevent>) in.readSerializable();
    user_search = (ArrayList<User>) in.readSerializable();
    error_message = in.readString();
}

public void writeToParcel(Parcel out, int content) {
    // TODO Auto-generated method stub
    out.writeString(tag);
    out.writeInt(success);
    out.writeInt(error);
    out.writeValue(user);
    out.writeValue(event);
    out.writeList(finishedevents);
    out.writeList(leaderboard);
    out.writeList(user_search);
    out.writeString(error_message);
}
公共字符串标签;
公众的成功;
公共整数错误;
酒吧