5

インテントからインテントサービスにカスタム ResultReciever を使用しようとしていますが、この奇妙なエラーが発生します。

なぜアイデアはありますか?

このガイドに従って resulReciever をコールバックとして使用する

http://lalit3686.blogspot.co.uk/2012/06/how-to-update-activity-from-service.html

サービスを開始するアクティビティからの私のコードは次のとおりです。

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
    }
}
4

1 に答える 1

13

これはどうですか :

public class NetworkService extends IntentService {

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

CREATOR は MyReciever で再定義されていないため、ResultReceiver インスタンスを作成します。インテントから ResultReceiver インスタンスをそのまま ResultReceiver として受け取るだけです。

于 2014-10-15T14:08:58.713 に答える