0

Я делаю простое приложение для Android для проекта. У меня есть активность, которая показывает вид списка разговора, и когда я нажимаю на один из перечисленных разговоров, я хочу показывать в нем сообщения. Для этого я использовал объект Parcelable.Получил nullpointer при попытке передать объект в действие

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) { 

} 

} 

В mainActivity я:

intent intent = new Intent(this,MessageActivity.class); 
intent.putExtra("chat", new ParcelableChat(item));//Where item is the Chat object from the ListView. 
startActivity(intent); 

В новой деятельности (MessageActivity) я делаю:

Bundle extras = getIntent().getExtras(); 
ParcelableChat parcelableChat= (ParcelableChat)extras.getParcelable("chat"); 
Chat chat = parcelableChat.getChat(); 

и когда я пытаюсь отобразить последнее сообщение в чате, используя:

 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 .... в чем проблема?

+0

Опубликовать логический вывод –

+0

Пожалуйста, добавьте stacktrace! –

+0

попробуйте использовать onNewIntent (Intent) –

ответ

0

Просто Измените новый вид деятельности, как это:

ParcelableChat parcelableChat= (ParcelableChat)getIntent().getParcelableExtra("chat"); 
Chat chat = parcelableChat.getChat(); 

проблема при запуске активности вы подключаете тха parcelable намерению, но при получении вы читаете из массовки. так что вы получаете нулевое значение.

+0

Я сделал, но у меня такая же ошибка :( – HaZe

+0

, в какой строке вы получаете? –

+0

показать свой модифицированный код. –

Смежные вопросы