我是在一个播放页面,想要得到一个语音数据,但是,从语音条页面发送的是一个实体对象的,在接收的类里面怎么接收呀?
下面是接收的代码行,报错
从一个Adapter里面发送的信息
intent.putExtra("myTuyuVoiceUrl", tuyuEntity.getVoiceUrl());
下面是整段代码
/**
* fromMyTuyu等 在有音乐数据条页面的setOnItemClickListener中设置了 intent.putExtra(..."1"),
* 本类如果得到等于1,那么就播放谁。好分辨数据来源或列表item
* */
fromMyTuyu = getIntent().getStringExtra("fromMyTuyu");//得到 将fromAlbum 放入意图中的类的Intent信息
fromMyTuyu = setNotNull(fromMyTuyu);//设置非空
playTuyuEntity = getIntent().getDataString("myTuyuEntity",playTuyuEntity);
initSystemUI();
initView();
if (fromMyTuyu != null && fromMyTuyu.length()>0){
if (fromMyTuyu.equals("1")){
startPlayLocalTuyu(playTuyuEntity);
}
}
这里面的 playTuyuEntity = getIntent().getDataString("myTuyuEntity",playTuyuEntity); 应该是不行的,不能在后面带数据或实体类的。
那么,就接收一个
String voiceUrl = getIntent().getStringExtra("myTuyuVoiceUrl");
但是,我在下面的playTuyu()中有需要一个实体类的,一些操作,
然后,得到了路径
private void playTuyuOngoing(TuyuEntityImpl tuyuEntity){
mLrcView.reset();
//播放
TuyuPlayerManager.getInstance().startPlay(tuyuEntity.getVoiceUrl());
如果,将上边的getIntent.getDataString 一行擦去,也不知道哪里错了哈。。
实体类得实现Parcelable接口,然后在目标activity就能通过getIntent().getParcelableExtra(name)得到对象
也可以实现Serializable接口,可以getIntent().getSerializableExtra()得到,但是得到的是Serializable,必须强转一下
传递对象需要序列化,序列化的方式通常有2种,一种是java自带的Serializable,一种就是Android的Parcelable
实体类如果可以转json,那么json可以转字符串,然后在接收的地方可以把字符串再转json,最后转实体类。
如果实体类不能转json,那么最好缩小接收范围,比如播放地址