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  希望大神们指点下

解决方案 »

  1.   

    key是String,1是Integer,加对引号就行了
      

  2.   

    直接用intent.putExtras(“1”, musicList);
    不用前面那个强转吧
      

  3.   

    晕死你传的是一个List。。都不是Music类。。
      

  4.   

    找不出啥问题。那个intent是为了打开另一个应用吗?如果不是同一个应用,是不能传递对象的。
      

  5.   

    我知道了,看了下里面的源码
    synchronizedList里面返回的是一个SynchronizedRandomAccessListSynchronizedRandomAccessList继承自SynchronizedListSynchronizedList里面继承自SynchronizedCollection然后里面有两个对象,Collection和Object,object好像木有实现Serializable。Collection实际上就是你的那个arraylist。这么一说,我又看了下普通的arraylist里面有神马,有一个object,但是transient属性的,序列化的时候为不可见。so,jdk的问题。 Collections.synchronizedList这个方法不应该调用
      

  6.   

    用bundle传递,有一个SerializableList的方法。
      

  7.   

    是可以的,但你的对象不可以序列化,一个对象序列化,除了自身实现了Serializable接口外,它的成员变量也需要可序列化。
    但Collections.synchronizedList返回的arraylist不能序列化。所以你不调用这个方法应该就可以了