我正在尝试将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 array
。 Client
中的Activity
对象不为空,bundle
中的Service
不为空。我也可以在活动之间传递我的Client
对象而没有任何问题。
为什么停止工作?如何解决此问题?
答案 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");