I am trying to cast the Intent::extraParcelable received, to my custom RestResultReceiver like this
public class APIHttpV1Service
extends IntentService
{
...
protected void onHandleIntent (Intent intent)
{
final int apiCall = intent.getIntExtra("uri");
final RestResultReceiver resultReceiver = intent.getParcelableExtra(RestResultReceiver.EXTRA_ID_RESULT_RECEIVER);
// check if the uri is correct
if( apiCall == -1)
{
// TODO call failed as we didn't provide any URI
resultReceiver.send(RestStatus.ERROR, Bundle.EMPTY);
}
...
}
}
and this is the RestResultReceiver
public class RestResultReceiver
extends ResultReceiver
{
private static final String TAG = "com...RestResultReceiver";
public static final String EXTRA_ID_RESULT_RECEIVER = "com...RestResultRecevier.Receiver";
private Receiver __mReceiver;
public RestResultReceiver(Handler handler)
{
super(handler);
}
public void clearReceiver()
{
__mReceiver = null;
}
/**
* Set the receiver
* @param receiver the object getting called back using onReceiveResult
*/
public void setReceiver( Receiver receiver )
{
__mReceiver = receiver;
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData)
{
if (__mReceiver != null)
{
__mReceiver.onReceiveResult(RestStatus.getEnum(resultCode), resultData);
}
else
{
Log.w(TAG, "Dropping result on floor for code " + resultCode + ": "
+ resultData.toString());
}
}
public void send(RestStatus resultStatus, Bundle resultData)
{
super.send(resultStatus.getCode(), resultData);
}
/**
* Interface to implement for objects doing rest service call
*/
public interface Receiver
{
public void onReceiveResult(RestStatus resultStatus, Bundle resultData);
}
}
At runtime I have a java.lang.ClassCastException exception. I am just wondering why I can get my RestResultReceiver. If I use
final ResultReceiver resultReceiver = intent.getParcelableExtra(RestResultReceiver.EXTRA_ID_RESULT_RECEIVER);
it doesn't throw any error but 开发者_如何学CI can't call my custom send function obviously.
Any idea?
Thx a lot for any help you could provide :)
精彩评论