putExtras(子类) - 接收基类

时间:2014-10-28 20:22:35

标签: java android inheritance

我有类播放列表扩展ArrayList 我在

中使用
Playlist playlist = new Playlist(); 
intent.putExtra("playlist", playlist); 

然后我试着把它拿回来:

if (getIntent().hasExtra("playlist")) {
    playlist = (Playlist)(getIntent().getExtras().getStringArrayList("playlist"));
}

但是收到错误: 引起:java.lang.ClassCastException:java.util.ArrayList无法强制转换为pl.mal.player.Playlist。 我知道问题是我想将基类转换为子类。但我不知道在这个例子中如何避免它。有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

getStringArrayList无法返回Playlist个对象。你必须做类似的事情

List<String> list = getIntent().getExtras().getStringArrayList("playlist");
Playlist playlist = new Playlist();
playlist.addAll(list);

你只能将一个对象强制转换为超类&amp;具体运行时类型实现的接口。在这种情况下,这是ArrayList。如果您想要更改,则必须修改getStringArrayList方法,因为其中的内容明确说明new ArrayList

答案 1 :(得分:0)

您的播放列表类必须实现parcelable才能将其传递给额外的。

http://developer.android.com/reference/android/os/Parcelable.html

How can I make my custom objects Parcelable?