【问题标题】:NullPointerException when Passing ArrayList through Intent using Parcelable使用 Parcelable 通过 Intent 传递 ArrayList 时出现 NullPointerException
【发布时间】:2014-03-28 05:13:05
【问题描述】:

我正在处理项目并从WCF services 获取数据并制作ArrayList,一切正常。我成功地从服务中获取数据。现在我想要的是通过 Intent 将 ArrayList 传递给另一个 Activity。基本上我知道如何发送 string 和 int。值,但我不知道如何通过 Intent 传递 ArrayList。我进行了很多搜索并尝试发送ArrayList through Intent Using Parcelable。但现在我收到 NullPointerException。有人可以帮助解决我的问题。或者让我知道我做的是正确的还是有其他方法可以做到这一点?提前致谢

**HOW I TRIED**

测验.java

public class Quiz implements Parcelable{

private String id;
private String quiz_code;
private String question;
private String choice_A;
private String choice_B;
private String choice_C;
private String choice_D;
private String ans;
private String quiz_title;


public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public String getQuiz_code() {
    return quiz_code;
}
public void setQuiz_code(String quiz_code) {
    this.quiz_code = quiz_code;
}
public String getQuestion() {
    return question;
}
public void setQuestion(String question) {
    this.question = question;
}
public String getChoice_A() {
    return choice_A;
}
public void setChoice_A(String choice_A) {
    this.choice_A = choice_A;
}
public String getChoice_B() {
    return choice_B;
}
public void setChoice_B(String choice_B) {
    this.choice_B = choice_B;
}
public String getChoice_C() {
    return choice_C;
}
public void setChoice_C(String choice_C) {
    this.choice_C = choice_C;
}
public String getChoice_D() {
    return choice_D;
}
public void setChoice_D(String choice_D) {
    this.choice_D = choice_D;
}
public String getAns() {
    return ans;
}
public void setAns(String ans) {
    this.ans = ans;
}
public String getQuiz_title() {
    return quiz_title;
}
public void setQuiz_title(String quiz_title) {
    this.quiz_title = quiz_title;
}
@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return this.hashCode();
}

public Quiz(){

}

public Quiz(Parcel source) {
    id = source.readString();
    ans = source.readString();
    quiz_title = source.readString();
    choice_A = source.readString();
    choice_B = source.readString();
    choice_C = source.readString();
    choice_D = source.readString();
    quiz_code = source.readString();
    question = source.readString();

}


@Override
public void writeToParcel(Parcel dest, int flags) {
    // TODO Auto-generated method stub
    dest.writeString(id);
    dest.writeString(ans);
    dest.writeString(quiz_title);
    dest.writeString(quiz_code);
    dest.writeString(question);
    dest.writeString(choice_A);
    dest.writeString(choice_B);
    dest.writeString(choice_C);
    dest.writeString(choice_D);

}

 public static final Parcelable.Creator CREATOR
 = new Parcelable.Creator() {
 public Quiz createFromParcel(Parcel in) {
 return new Quiz(in);
 }

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

通过 Intent 将 ArrayList 发送到另一个 Activity:

MainActivity:

in = new Intent(GettingQuizTitleActivity.this,TestActivity.class);

            in.putParcelableArrayListExtra("key", quizList);
            startActivity(in);

我如何尝试接收 ArrayList

第二个活动:

try{
    Intent intent = null;

    ArrayList<Quiz> test = (ArrayList<Quiz>) intent.<Quiz>getParcelableArrayListExtra("key");

    }
 catch(Exception e){
    e.printStackTrace();
}

【问题讨论】:

  • 使用意图=getIntent();在第二个活动中
  • 谢谢 raju.. 我明白了。

标签: android arraylist nullpointerexception parcelable


【解决方案1】:

在您的SecondActivity 中通过这一行,您的Intentnull

Intent intent = null;

改成

Intent intent = getIntent();

您的 Parcelable 中还有一件事.. 您在writeToParcel() 方法中以什么方式编写的顺序您需要在Quiz(Parcel source) 中遵循相同的顺序

【讨论】:

  • @MuneebAmjad 通过单击答案左侧的刻度线来接受它,以便对其他人有所帮助..
【解决方案2】:

在你的第二个活动中,

Intent intent = null;  

应该是:

Intent intent = getIntent();  

您正在使用intent(=null) 来获取列表。

【讨论】:

    【解决方案3】:

    将您的 secondActivity 代码更改为此

     Intent intent = getIntent();
    
    ArrayList<Quiz> test = (ArrayList<Quiz>) intent.<Quiz>getParcelableArrayListExtra("key");
    

    【讨论】:

      【解决方案4】:

      从这里改变

        Intent intent = null;
      

       Intent intent = getIntent();
      

      在您的情况下,您的意图对象为空。所以你有问题。

      【讨论】:

        猜你喜欢
        • 2021-09-30
        • 2016-01-20
        • 2011-07-19
        • 1970-01-01
        • 1970-01-01
        • 2015-03-17
        • 1970-01-01
        • 2017-08-07
        • 2018-05-24
        相关资源
        最近更新 更多