Android包:java.lang.NullPointerException

时间:2017-09-24 04:33:16

标签: android bundle parcelable

我正在尝试将Parcelable对象从Activity发送到IntentSerivce。下面的代码运行良好,我已经对项目进行了更改,但没有对该部分进行更改,并且不知道为什么它已停止工作。

的活动:

Bundle bundle = new Bundle();
bundle.putParcelable("client", client);
bundle.putParcelable("job", job);

Intent intent = new Intent(this, EmailService.class);
intent.putExtra("bundle", bundle);
intent.putExtra("type", "type1");

startService(intent);

服务:

protected void onHandleIntent(Intent intent) {
  String type = intent.getStringExtra("type");

  Bundle bundle = intent.getBundleExtra("bundle");
  Client client = bundle.getParcelable("client");
  ...

Client client = bundle.getParcelable("client");会导致java.lang.NullPointerException: Attempt to get length of null arrayClient中的Activity对象不为空,bundle中的Service不为空。我也可以在活动之间传递我的Client对象而没有任何问题。

为什么停止工作?如何解决此问题?

1 个答案:

答案 0 :(得分:0)

你不必把捆绑。您可以使用intent放置对象或dto。然后在活动的OnCreate中解析此对象。以为您需要序列化您的对象或dto。

示例:

开始活动像这样

Intent intent = new Intent(this, EmailService.class); intent.putExtra("client", client); intent.putExtra("job", job);

然后在你的Oncreate活动解析

Client client = (Client) getIntent().getSerializableExtra("client");
Job job = (Job) getIntent().getSerializableExtra("job");