到底这是一个序列化的问题,因为它是在评论中指出。
所以,我有一个适配器的ViewHolder
这里面的方法:
@Override
public void onClick(View view) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
Offer offer = offers.get(position);
Intent intent = new Intent(context, MyOfferActivity.class);
Bundle extras = new Bundle();
extras.putSerializable(Constants.OFFER_INTENT_KEY, offer);
extras.putSerializable(Constants.USER_INTENT_KEY, user);
intent.putExtras(extras);
context.startActivity(intent);
}
}
而且对MyOfferActivity
我这样做了onCreateView
:
Bundle extras = getIntent().getExtras();
offer = (Offer) extras.getSerializable(Constants.OFFER_INTENT_KEY);
user = (User) extras.getSerializable(Constants.USER_INTENT_KEY);
的问题是,offer
结束up null
。我有调试它,当我把它放在束中它不是null。尽管如此,我可以获得user
。
这是以前工作没有任何麻烦,它“神奇”停止工作。
实际上,我原本是这么做的,因为它无处不在,我把它改成了以前的代码,看看它是否修复了它。它没有。
@Override
public void onClick(View view) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
Offer offer = offers.get(position);
Intent intent = new Intent(context, MyOfferActivity.class);
intent.putExtra(Constants.USER_INTENT_KEY, user);
intent.putExtra(Constants.OFFER_INTENT_KEY, offer);
context.startActivity(intent);
}
}
和接收机:
offer = (Offer) getIntent().getSerializableExtra(Constants.OFFER_INTENT_KEY);
user = (User) getIntent().getSerializableExtra(Constants.USER_INTENT_KEY);
什么可以吗?
我已经尝试了这两个版本的代码,并且还改变了我设置额外功能并接收它们的顺序,但它仍然不起作用。 另外,getIntent().hasExtra(Constants.OFFER_INTENT_KEY)
返回false。
这是错误:
FATAL EXCEPTION: main
Process: com.yournanny, PID: 742
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yournanny/com.yournanny.activities.offers.MyOfferActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.yournanny.models.Nanny com.yournanny.models.Offer.getAcceptedNanny()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2711)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2772)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1515)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:241)
at android.app.ActivityThread.main(ActivityThread.java:6223)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.yournanny.models.Nanny com.yournanny.models.Offer.getAcceptedNanny()' on a null object reference
at com.yournanny.activities.offers.MyOfferActivity.setContent(MyOfferActivity.java:69)
at com.yournanny.activities.offers.MyOfferActivity.onCreate(MyOfferActivity.java:64)
at android.app.Activity.performCreate(Activity.java:6705)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2664)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2772)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1515)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:241)
at android.app.ActivityThread.main(ActivityThread.java:6223)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
线造成它是这一个: if (user.getType() == UserType.FAMILY && offer.getAcceptedNanny() == null && offer.getState() == State.REQUESTED)
这是我使用offer
活动中的第一个。
在您使用此代码启动时是否存在'MyOfferActivity'的现有实例?你是否在清单中使用'android:launchMode'或其他东西来重用现有的实例? – CommonsWare
我没有使用'android:launchMode',但我不确定在哪里查看是否存在'MyOfferActivity'的现有实例(我正在使用Android Studio) – moondaisy
“我不确定在哪里看查看是否存在现有实例“ - 您是否从代码中的任何其他位置启动了”MyOfferActivity“?有没有一种情况是你从这个代码或其他代码开始启动MyOfferActivity,然后导航离开它(例如,启动一些其他活动而不完成MyOfferActivity),然后再次启动MyOfferActivity? – CommonsWare