java.lang.ClassCastException:android.os.ResultReceiver无法强制转换为com.hello.utils.network.MyReceiver

java.lang.ClassCastException:android.os.ResultReceiver无法强制转换为com.hello.utils.network.MyReceiver,java,android,android-intent,android-intentservice,Java,Android,Android Intent,Android Intentservice,我试图使用一个自定义ResultReciever从一个intent转换到一个intentService,但我得到了这个bizare错误 你知道为什么吗 在使用ResultReceiver作为回调时遵循此指南 以下是启动服务的活动中的代码: private void doNetworkInitCalls() { intent = new Intent(getApplicationContext(), NetworkService.class); intent.setAction(

我试图使用一个自定义ResultReciever从一个intent转换到一个intentService,但我得到了这个bizare错误

你知道为什么吗

在使用ResultReceiver作为回调时遵循此指南

以下是启动服务的活动中的代码:

private void doNetworkInitCalls() {
    intent = new Intent(getApplicationContext(), NetworkService.class);
    intent.setAction(NetworkService.ACTION_GET_CITY_INFO);
    intent.putExtra(NetworkService.EXTRA_LATLON, new LatLon(51.5073, 0.1276));
    MyReciever reciever = new MyReciever(null);
    reciever.setOnCityInfoRecieved(this);
    intent.putExtra(MyReceiver.RESULT_RECEIEVER_EXTRA, reciever);
    startService(getCityInfoIntent);
}
MyReceiver类:

public class MyReciever extends ResultReceiver {

    public static final String RESULT_CITY_INFO = "cityInfoData";
    public static final String RESULT_RECEIEVER_EXTRA = "reciever";

    public MyReciever(Handler handler) {
        super(handler);
    }

    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData) {
        super.onReceiveResult(resultCode, resultData);
    }
}
意向服务:

public class NetworkService extends IntentService {

 @Override
 protected void onHandleIntent(Intent intent) {
     if (intent != null) {
         MyReciever reciever = intent.getParcelableExtra(MyReciever.RESULT_RECEIEVER_EXTRA); //fails on this line
    }
}
那么这个呢:

public class NetworkService extends IntentService {

 @Override
 protected void onHandleIntent(Intent intent) {
     if (intent != null) {
         ResultReceiver reciever = intent.getParcelableExtra(MyReciever.RESULT_RECEIEVER_EXTRA);
    }
}

由于在MyReceiver中没有重新定义CREATOR,它会创建ResultReceiver实例。只需按原样从intent接收ResultReceiver实例即可。

Receiver,Receiver,Receiver。。?(检查拼写错误)对不起,粘贴错误。编辑上面的代码片段显示您的ResultReceiver.java类什么是
GetCityInfoContent
?你不应该做
startService(intent)相反?问题是只有MyReceiver的ResultReceiver“部分”被序列化到parcel。。。您提供的链接有误导性的代码,包裹序列化是按值而不是按引用进行的,因此您在另一端没有相同的对象,但它是在intance中重新创建的…这不会丢失对我的实际CustomResultReciever的引用吗?不,reciever仍然是MyReciever,但NetworkService将其视为ResultReceiver