ClassNotFoundException при передаче данных между сервисом и активностью - PullRequest
1 голос
/ 20 декабря 2010

Я пишу приложение, которое состоит из базовой службы и контроллера графического интерфейса. Служба собирает данные и отправляет контроллеру, я использовал Messenger и помещаю в пакет сообщения массив отправляемых объектов. Но когда он получен на стороне контроллера, возникает ошибка:

android.os.BadParcelableException: ClassNotFoundException в демаршаллинге MyData ...

Я уверен, что MyData правильно реализует интерфейс Parcelable. Кажется, я должен сделать что-то с ClassLoader? или что еще? Пожалуйста, помогите мне. Большое спасибо!

Ответы [ 2 ]

1 голос
/ 09 января 2011

Вчера я получил ту же проблему, и она была решена следующим образом: установить загрузчик классов, используя «bundle.setClassLoader (getClassLoader ());» прямо перед вызовом getParcelableArray для этого пакета.

Я не знаю, как и почему он работает, но в моем коде он работает просто отлично.

0 голосов
/ 20 декабря 2010

Вот часть моего кода:

    //send data from the service to the bound client

    MyData[] items; ...

    Bundle bundle = new Bundle();
    bundle.putParcelableArray("items", items);
    //send in a message
    Message msg = Message.obtain(null, DATA_AVAIL);
    msg.replyTo = mIncomingMessenger;
    ...
    msg.setData(bundle);

=========
//receive data 
 public void handleMessage(Message msg) {
    if (msg.what == DATA_AVAIL){
            Bundle bundle = msg.getData();          
        MyData[] items = (MyData[])bundle.getParcelableArray("items");
//error happens here, classnotfound

        }
...
}
...