求助:关于用Intent传递List<>类型的问题

jaysu1990 2012-04-03 09:44:26


public class Music implements Serializable {
private static final long serialVersionUID = -7060210544600464481L;

int musicId;
String musicName;
String musicPath;


public int getMusicId() {
return musicId;
}
public void setMusicId(int musicId) {
this.musicId = musicId;
}
public String getMusicName() {
return musicName;
}
public void setMusicName(String musicName) {
this.musicName = musicName;
}
public String getMusicPath() {
return musicPath;
}
public void setMusicPath(String musicPath) {
this.musicPath = musicPath;
}

}






public void searchMusci(File file) {
musicList = new ArrayList<Music>();
File[] files = file.listFiles();
for(int i=0; i<files.length; i++) {
if(files[i].isDirectory()) {
searchMusci(files[i]);
}else if(files[i].getName().endsWith(".mp3")){
music = new Music();
music.setMusicId(i);
music.setMusicName(files[i].getName());
music.setMusicPath(files[i].getAbsolutePath());
musicList.add(music);
}

}

musicList = Collections.synchronizedList(new ArrayList<Music>());//把List类型强转型
Intent intent = new Intent("android.music.MusicService_Action");
intent.putExtras(1, musicList);
}
上面的Music.class已经实现Synchronize接口,但是最后一行intent.putExtra(1, musicList)提示错误,这是为什么呢?有个参考文章链接http://www.eoeandroid.com/forum.php?mod=viewthread&tid=81308 希望大神们指点下
...全文
676 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuwenli103 2012-07-31
  • 打赏
  • 举报
回复
纠结纠结。。。。
liuwenli103 2012-07-31
  • 打赏
  • 举报
回复
没回复上?
liuwenli103 2012-07-31
  • 打赏
  • 举报
回复
哥们儿我也遇到你这问题。
请问有结果没啊
追风筝的孩子 2012-04-05
  • 打赏
  • 举报
回复
我知道了,看了下里面的源码
synchronizedList里面返回的是一个SynchronizedRandomAccessList

SynchronizedRandomAccessList继承自SynchronizedList

SynchronizedList里面继承自SynchronizedCollection

然后里面有两个对象,Collection和Object,object好像木有实现Serializable。Collection实际上就是你的那个arraylist。

这么一说,我又看了下普通的arraylist里面有神马,有一个object,但是transient属性的,序列化的时候为不可见。so,jdk的问题。。。。 Collections.synchronizedList这个方法不应该调用
追风筝的孩子 2012-04-05
  • 打赏
  • 举报
回复
找不出啥问题。那个intent是为了打开另一个应用吗?如果不是同一个应用,是不能传递对象的。
小裴同学 2012-04-05
  • 打赏
  • 举报
回复
直接static吧
追风筝的孩子 2012-04-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
好吧,看懵了。所以,这样传递对象时不行的是吗?引用 11 楼 的回复:

我知道了,看了下里面的源码
synchronizedList里面返回的是一个SynchronizedRandomAccessList

SynchronizedRandomAccessList继承自SynchronizedList

SynchronizedList里面继承自SynchronizedColle……
[/Quote]是可以的,但你的对象不可以序列化,一个对象序列化,除了自身实现了Serializable接口外,它的成员变量也需要可序列化。
但Collections.synchronizedList返回的arraylist不能序列化。所以你不调用这个方法应该就可以了
赵志铭 2012-04-05
  • 打赏
  • 举报
回复
用bundle传递,有一个SerializableList的方法。
jaysu1990 2012-04-05
  • 打赏
  • 举报
回复
好吧,看懵了。所以,这样传递对象时不行的是吗?[Quote=引用 11 楼 的回复:]

我知道了,看了下里面的源码
synchronizedList里面返回的是一个SynchronizedRandomAccessList

SynchronizedRandomAccessList继承自SynchronizedList

SynchronizedList里面继承自SynchronizedCollection

然后里面有两个对象,Collection和Object,ob……
[/Quote]
jaysu1990 2012-04-04
  • 打赏
  • 举报
回复
想通过List传Music对象[Quote=引用 5 楼 的回复:]

晕死。。。你传的是一个List。。都不是Music类。。。。。
[/Quote]
Marco_Lee 2012-04-04
  • 打赏
  • 举报
回复
晕死。。。你传的是一个List。。都不是Music类。。。。。
jaysu1990 2012-04-04
  • 打赏
  • 举报
回复
不行啊。。。[Quote=引用 3 楼 的回复:]

直接用intent.putExtras(“1”, musicList);
不用前面那个强转吧
[/Quote]
life02 2012-04-04
  • 打赏
  • 举报
回复
用bundle试试
bn0922 2012-04-04
  • 打赏
  • 举报
回复
直接用intent.putExtras(“1”, musicList);
不用前面那个强转吧
jaysu1990 2012-04-03
  • 打赏
  • 举报
回复
这样不行,我试过了[Quote=引用 1 楼 的回复:]

key是String,1是Integer,加对引号就行了
[/Quote]
Marco_Lee 2012-04-03
  • 打赏
  • 举报
回复
key是String,1是Integer,加对引号就行了

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧