MyCustomObject
유형의 객체를 인 텐트를 통해 다른 활동으로 보내려고합니다. 알아요, Parcelable 클래스를 만들려면 public class MyCustomObject implements Parcelable
을 사용해야합니다. 그러나 사용자 정의 개체 배열이 parcelable에서 작동하는 방법을 잘 모르겠습니다. 여기에 제가 지금까지 가지고있는 것이 있습니다 .. 또한 Search 클래스가 Parcelable을 구현하도록해야합니까?맞춤 자바 객체 만들기 안드로이드에서 소멸 가능
내 대답은입니다. 지금 intent.getParcelableExtra(search)
일 때 null 개체가 나타납니다. 검색 배열을 제대로 만들지 않았을 수 있습니까?
public class MyCustomObject implements Parcelable{
public Search search[];
public MyCustomObject(Parcel in){
in.readArray(MyCustomObject.class.getClassLoader());
}
@Override
public int describeContents(){
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags){
dest.writeArray(search)
}
public static final Parcelable.Creator<MyCustomObject> CREATOR = new Parcelable.Creator<MyCustomObject>(){
@Override
public MyCustomObject createFromParcel(Parcel source){
return new MyCustomObject(source);
}
@Override
public MyCustomObject[] newArray(int size){
return new MyCustomObject[size];
}
}
public static class Search implements Parcelable{
public int rank;
public String title;
public String[] imageURL;
public Search(Parcel in){
rank = in.readInt();
title = in.readString();
String[] url = new String[4];
in.readStringArray(url);
url = imageURL
}
@Override
public int describeContents(){
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags){
dest.writeInt(rank);
dest.writeString(title);
dest.writeStringArray(imageURL);
}
public static final Parcelable.Creator<Search> CREATOR = new Parcelable.Creator<Search>(){
@Override
public Search createFromParcel(Parcel source){
return new Search(source);
}
@Override
public Search[] newArray(int size){
return new Search[size];
}
}
}
}
감사합니다. 당신이 말한대로 해봤지만 .. in.readStringArray (imageURL);에서 nullpointerexception을 얻고 있습니다. 문자열 배열을 읽는 방법이 아닌 것 같습니다. 내 대답을 빨리 볼 수 있니? – Raunak
위의 문제를 수정했습니다. 이제는 intent.getParcelableExtra (search) 할 때 null 객체가 생깁니다. 어떤 아이디어? – Raunak
'검색'이 무엇인지 확실하지 않습니다. 나는 그것을 문자열이라고 가정하고 Activity를 시작하는 데 사용 된 Intent에 Extra를 배치하는 데 사용했습니다. MyCustomObject를 소포 (Parcel)에 넣은 다음 중단 점을 추가하여 디버깅을 시도한 다음 의도를 읽었을 때 다음 활동 (Activity)에서 다시 시도하십시오. – michaelg