#android
#Android
Вопрос:
Я пытаюсь передать полученное Intent::extraParcelable в мой пользовательский RestResultReceiver следующим образом
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);
}
...
}
}
и это 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);
}
}
Во время выполнения у меня есть java.lang.Исключение ClassCastException. Мне просто интересно, почему я могу получить свой RestResultReceiver.
Если я использую
final ResultReceiver resultReceiver = intent.getParcelableExtra(RestResultReceiver.EXTRA_ID_RESULT_RECEIVER);
он не выдает никаких ошибок, но я, очевидно, не могу вызвать свою пользовательскую функцию отправки.
Есть идеи?
Большое спасибо за любую помощь, которую вы могли бы предоставить 🙂