2014-10-15 2 views
4

의도 한 ResultReciever를 intentService로 사용하려고하는데이 오류가 발생합니다.java.lang.ClassCastException : android.os.ResultReceiver를 com.hello.utils.network.MyReciever로 캐스팅 할 수 없습니다.

어떤 아이디어 왜?

여기

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

가 시작 활동에서 내 코드 콜백으로 resulReciever을 사용하여이 가이드를 이어 서비스 :

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); 
} 

MyReciever 클래스 :

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); 
    } 
} 

IntentService :

012 이것에 대해 3,516,
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 
    } 
} 
+0

수신자, 수신자, 수신자 ..? (오타 확인) – Hacketo

+0

죄송합니다. 위의 스 니펫을 편집했습니다. – jonney

+0

ResultReceiver.java 클래스를 표시하십시오. –

답변

10

무엇 : CREATOR으로

public class NetworkService extends IntentService { 

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

이 MyReciever에서 재정의되지 않은, 그것은 ResultReceiver 인스턴스를 생성합니다. 인 텐트에서 ResultReceiver 인스턴스를 수신하면 ResultReceiver를 수신하면됩니다.

+0

내 CustomResultReciever에 대한 참조를 잃지 않습니까? – jonney

+1

아니요, 수신자는 여전히 MyReciever이지만 NetworkService에서 ResultReceiver로 보입니다. – ToYonos