0

프로젝트 용 간단한 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(); 

문제는 그러나 오는 동안 당신은 엑스트라에서 읽고 :

+0

logcat 출력을 게시하십시오 –

+0

stacktrace를 추가하십시오! –

+0

onNewIntent (의도)를 사용하려고 시도합니다. –

답변

0

그냥 같은 새로운 활동을 수정합니다. 그래서 당신은 거기에 null을 얻고 있습니다.

+0

동일한 오류가 발생했는데 ( – HaZe

+0

) 어떤 줄이 표시 되나요? –

+0

수정 된 코드가 표시됩니다. –

관련 문제