프로젝트 용 간단한 Android 애플리케이션을 만들고 있습니다. 대화 목록보기를 보여주는 활동이 있으며 나열된 대화 중 하나를 클릭하면 메시지가 표시됩니다. 이 목적을 위해 Parcelable 개체를 사용했습니다. mainActivity에서 개체를 활동에 전달하려고 할 때 null 포인터가 있습니다.
import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
import android.widget.Toast;
import java.util.concurrent.ConcurrentHashMap;
public class ParcelableChat implements Parcelable {
private Chat c;
public Chat getChat(){
return this.c;
}
public ParcelableChat(Chat c){
this.c = c;
}
public ParcelableChat(Parcel in){
c = new Chat();
c.setObject(in.readString());
c.setMessageManager((MessageManager)in.readParcelable(MessageManager.class.getClassLoader()));
}
public static final Creator<ParcelableChat> CREATOR =
new ClassLoaderCreator<ParcelableChat>() {
@Override
public ParcelableChat createFromParcel(Parcel parcel) {
return new ParcelableChat(parcel);
}
@Override
public ParcelableChat[] newArray(int i) {
return new ParcelableChat[i];
}
@Override
public ParcelableChat createFromParcel(Parcel parcel, ClassLoader classLoader) {
return new ParcelableChat(parcel);
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
}
}
내가 할 :
Bundle extras = getIntent().getExtras();
ParcelableChat parcelableChat= (ParcelableChat)extras.getParcelable("chat");
Chat chat = parcelableChat.getChat();
을 내가 사용하는 대화의 마지막 메시지를 표시 할 때 : 새로운 활동 (MessageActivity) 내가 할에서
intent intent = new Intent(this,MessageActivity.class);
intent.putExtra("chat", new ParcelableChat(item));//Where item is the Chat object from the ListView.
startActivity(intent);
Toast.makeText(getApplicationContext(),"Value : "+ chat.getLastMessage(),Toast.LENGTH_SHORT).show();
LogCat :
Process: project.ingsw.maboo, PID: 31172
java.lang.RuntimeException: Unable to start activity ComponentInfo{project.ingsw.maboo/project.ingsw.maboo.MessageActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at project.ingsw.maboo.Chat.getMessage(Chat.java:36)
at project.ingsw.maboo.MessageActivity.onCreate(MessageActivity.java:37)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)
나는 NullPointerExeption을 얻습니다. 무엇이 문제입니까? 당신이 의도 그쪽으로 parcelable를 부착하는 활동을 시작하는 동안
ParcelableChat parcelableChat= (ParcelableChat)getIntent().getParcelableExtra("chat");
Chat chat = parcelableChat.getChat();
문제는 그러나 오는 동안 당신은 엑스트라에서 읽고 :
logcat 출력을 게시하십시오 –
stacktrace를 추가하십시오! –
onNewIntent (의도)를 사용하려고 시도합니다. –