2015-09-04 90 views
1

我正在创建音乐播放器。当我的意图发送服务信息和播放列表中的自定义对象为了MyService,为MyService CA不打算把它并返回null无法从服务意图中获取自定义对象

发送意图为了MyService:

Intent intent = new Intent(getActivity(), MyService.class); 
       intent.putExtra("command", list.get(position)); 
       intent.putExtra("dataBase", serviceInfo); 
       getActivity().startService(intent);` 

试图获取服务信息,从意向为MyService与设置和播放列表

serviceInfo = (SettingsAndPlaylist) intent.getSerializableExtra("dataBase"); 
      position = serviceInfo.getPosition(); 
      repeatController = serviceInfo.isRepeat(); 
      playList = serviceInfo.getPlayList(); 

对象是serealizable和发送意图不为空

player sources

+0

列表包含的对象的类型是什么 – Ramesh

+0

是否意图为空,而不是您的'数据库'对象? 请检查(和张贴)来自logcat的异常 – Tapirboy

+0

您应该在问题中包含SettingsAndPlaylist的源代码,而不是使用外部链接:否则,当您在github上的代码发生更改时,他的问题和答案对新读者(这就是为什么我在我的答案中复制了相关部分的原因)。或者更好的是,创建一个简约的测试用例来展示您的问题,并将其发布到此处。 – mrlem

回答

0

那么,你的序列化类写着:

public class SettingsAndPlaylist implements Serializable { 
    private static List playList; 
    private static int position; 
    private static boolean repeat; 
    private static boolean random; 

连载作品为对象的实例字段,静态字段。顺便说一句,你还应该声明一个serialVersionUID。

有关这两点的详细信息,请参阅http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html

+0

有你的问题! – Tapirboy

+0

我必须在SettingsAndPlaylist中声明一个serialVersionUID,对吧? –

+0

确实,像私人静态最终long serialVersionUID = 8091360262568306407L; (标识符应该是唯一的,任何现代IDE应该显示一个警告并提供生成标识符) – mrlem