Android 无法从服务中的意图获取自定义对象
我正在制作一个音乐播放器。当我将自定义对象中的服务信息和播放列表发送到intent中的MyService时,MyService无法从intent中获取它并返回null 正在向Myservice发送意图:Android 无法从服务中的意图获取自定义对象,android,android-intent,Android,Android Intent,我正在制作一个音乐播放器。当我将自定义对象中的服务信息和播放列表发送到intent中的MyService时,MyService无法从intent中获取它并返回null 正在向Myservice发送意图: Intent intent = new Intent(getActivity(), MyService.class); intent.putExtra("command", list.get(position)); intent.p
Intent intent = new Intent(getActivity(), MyService.class);
intent.putExtra("command", list.get(position));
intent.putExtra("dataBase", serviceInfo);
getActivity().startService(intent);`
试图从intent获取MyService中的服务信息
serviceInfo = (SettingsAndPlaylist) intent.getSerializableExtra("dataBase");
position = serviceInfo.getPosition();
repeatController = serviceInfo.isRepeat();
playList = serviceInfo.getPlayList();
具有设置和播放列表的对象在发送意图中可序列化且不为空
您的可序列化类如下所示:
public class SettingsAndPlaylist implements Serializable {
private static List playList;
private static int position;
private static boolean repeat;
private static boolean random;
序列化适用于对象实例字段,而不是静态字段。
顺便说一下,您还应该声明serialVersionUID
有关这两点的详细信息,请参见。您的可序列化类如下所示:
public class SettingsAndPlaylist implements Serializable {
private static List playList;
private static int position;
private static boolean repeat;
private static boolean random;
序列化适用于对象实例字段,而不是静态字段。
顺便说一下,您还应该声明serialVersionUID
有关这两点的详细信息,请参见。不确定从
onStartCommand
返回的标志是什么,是否尝试过不同的标志,如
如果您正在使用,您需要为空意图做好准备。不确定从
onStartCommand
返回什么标志,您是否尝试过不同的标志,如
如果您正在使用,您需要为空意图做好准备。列出的对象类型是什么?可能是意图为空,而不是“数据库”对象?请检查(并发布)LogcatException您应该在问题中包含设置和播放列表的源代码,而不是使用外部链接:否则,当您在github上的代码更改时,他的问题和答案对新读者来说毫无意义(这就是为什么我在回答中复制了相关部分)。或者更好,创建一个最低限度的测试用例来展示您的问题,并将其发布在这里。列出的对象类型是什么?如果意图为空,而不是您的“数据库”对象?请检查(并发布)LogcatException您应该在问题中包含设置和播放列表的源代码,而不是使用外部链接:否则,当您在github上的代码更改时,他的问题和答案对新读者来说毫无意义(这就是为什么我在回答中复制了相关部分)。或者更好,创建一个最低限度的测试用例来展示您的问题,并将其发布在这里。这就是您的问题!我必须在设置和播放列表中声明serialVersionUID,对吗?事实上,类似于私有静态最终长serialVersionUID=8091360262568306407L;(标识符应该是唯一的,任何现代IDE都应该显示警告并提供生成标识符的功能)这是您的问题!我必须在设置和播放列表中声明serialVersionUID,对吗?事实上,类似于私有静态最终长serialVersionUID=8091360262568306407L;(标识符应该是唯一的,任何现代IDE都应该显示警告并提供生成标识符的功能)