Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
petroff
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 3
#1

Ошибка при передаче Parcel - Программирование Android

16.05.2013, 20:12. Просмотров 809. Ответов 3
Метки нет (Все метки)

Здраствуйте, пытаюсь через Parcel передать в другую активити обект
и получаю ошибку

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at dalvik.system.NativeStart.main(Native Method)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime    Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: currency.online.Currency
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.os.Parcel.readParcelable(Parcel.java:1966)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.os.Parcel.readValue(Parcel.java:1854)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.os.Parcel.readListInternal(Parcel.java:2103)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.os.Parcel.readList(Parcel.java:1422)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at currency.online.MyParcelable.<init>(MyParcelable.java:36)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at currency.online.MyParcelable.<init>(MyParcelable.java:10)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at currency.online.MyParcelable$1.createFromParcel(MyParcelable.java:25)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at currency.online.MyParcelable$1.createFromParcel(MyParcelable.java:23)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.os.Parcel.readParcelable(Parcel.java:1992)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.os.Parcel.readMapInternal(Parcel.java:2094)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.os.Bundle.unparcel(Bundle.java:223)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.os.Bundle.getParcelable(Bundle.java:1158)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.content.Intent.getParcelableExtra(Intent.java:3777)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at currency.online.CurrencyCalculator.onCreate(CurrencyCalculator.java:13)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.app.Activity.performCreate(Activity.java:4465)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
15:50:46.176    2349    currency.online    ERROR    AndroidRuntime        ... 11 more

MyParcelable

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package currency.online;
 
import java.util.List;
 
import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
import java.util.List;
 
public class MyParcelable implements Parcelable {
    private String currentCurency;
    List<Currency> currency;
 
    public int describeContents() {
        return 0;
    }
 
    public void writeToParcel(Parcel out, int flags) {
        out.writeString(currentCurency);
        out.writeList(currency);
    }
 
    public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() {
        public MyParcelable createFromParcel(Parcel in) {
            return new MyParcelable(in);
        }
 
        public MyParcelable[] newArray(int size) {
            return new MyParcelable[size];
        }
    };
 
    private MyParcelable(Parcel in) {
        currentCurency = in.readString();
        currency = new ArrayList<Currency>();
        in.readList(currency, null);
    }
 
    MyParcelable(List<Currency> currency, String currentCurency) {
        this.currentCurency = currentCurency;
        this.currency = currency;
    }
}
Currency

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package currency.online;
 
import android.os.Parcel;
import android.os.Parcelable;
 
/**
*
* @author petroff
*/
public class Currency implements Parcelable {
 
    private String charCode;
    private String name;
    private Double value;
    private String date;
 
    public Currency() {
    }
 
    public void setCharCode(String charCode) {
        this.charCode = charCode;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setValue(Double value) {
        this.value = value;
    }
 
    public void setDate(String date) {
        this.date = date;
    }
 
    public String getName() {
        return this.name;
    }
 
    public String getCharCode() {
        return this.charCode;
    }
 
    public Double getValue() {
        return this.value;
    }
 
    public String getDate() {
        return this.date;
    }
 
    public int describeContents() {
        return 0;
    }
 
    public void writeToParcel(Parcel out, int flags) {
        out.writeString(charCode);
        out.writeString(name);
        out.writeDouble(value);
        out.writeString(date);
    }
    
    public static final Parcelable.Creator<Currency> CREATOR = new Parcelable.Creator<Currency>() {
 
        public Currency createFromParcel(Parcel in) {
            return new Currency(in);
        }
 
        public Currency[] newArray(int size) {
            return new Currency[size];
        }
    };
 
    private Currency(Parcel in) {
        charCode = in.readString();
        name = in.readString();
        value = in.readDouble();
        date = in.readString();
    }
 
    public Currency(String charCode, String name, Double value, String date) {
        this.charCode = charCode;
        this.name = name;
        this.value = value;
        this.date = date;
    }
}
Вызов и передача

Java
1
2
3
4
5
6
7
8
9
10
11
MyParcelable mp = new MyParcelable(model.currency,model.defaultCurrency);
        Intent intent = new Intent(this, CurrencyCalculator.class);
        intent.putExtra(MyParcelable.class.getCanonicalName(), mp);
        startActivityForResult(intent, 1);
 
----------------------------------------------------------------------------
 
super.onCreate(savedInstanceState);
        setContentView(R.layout.calc);
        MyParcelable myObj = (MyParcelable) getIntent().getParcelableExtra(
                MyParcelable.class.getCanonicalName());
Подскажите пожалуйста, где ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2013, 20:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при передаче Parcel (Программирование Android):

Parcel Unmarshalling unknown type code 7667826 at offset 248 - Программирование Android
При передаче одного значения ArrayList из Activity в Activity все проходит хорошо, но при &lt;2 выскакивает ошибка Caused by:...

Progressbar при передаче файла на сервер - Программирование Android
Добрый день! Имею код для отправки файла на сервер public String sendPhoto(File file){ String total = &quot;&quot;; String...

Не передаются значения при их передаче в другое активити - Программирование Android
Собственно, обработчик по клику в первом активти: Intent shopintent = new Intent(MainActivity.this, Shop.class); ...

При передаче текста в другую программу нужен только Bluetooth - Программирование Android
При открытии списка программ в которые может быть отправлен текст из моей программы , есть и Bluetooth. Можно ли сделать так чтобы он был...

Как перехватить пакет (запрос) данных при текущей передаче данных? - Программирование Android
Хочу сделать на подобии валидации - что бы доступ к сети был только на определённые сайты. Я предполагаю так, перехватить текущий пакет...

Ошибка при запуске AsyncTask при нажатии на пункт ActionBar - Программирование Android
Здравствуйте, почему при нажатии на пункт Action Bar'а вылетает ошибка? @Override public boolean onCreateOptionsMenu(Menu menu)...

3
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.05.2013, 20:37 #2
Currency это в либе какой-то?
0
petroff
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 3
16.05.2013, 23:57  [ТС] #3
да нет, это мой класс

Добавлено через 7 минут
Его как раз в листе я пытаюсь передать в другую активити, и на нем как раз вылетает ошибка, а конкретней когда я его пытаюсь прочесть
Java
1
2
currency = new ArrayList<Currency>();
        in.readList(currency, null);
0
petroff
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 3
18.05.2013, 11:45  [ТС] #4
ответ как всегда в гугле,может комуто понадобится
Вместо
out.writeList(currency); используем out.writeTypedList(currency);
для реадер тоже самое соотвественно
0
18.05.2013, 11:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2013, 11:45
Привет! Вот еще темы с ответами:

Ошибка при передаче строк в функцию, ошибка при формировании дерева - Visual C++
Курсовой проект, в основе база данных, данные записываются в двоичное дерево. Есть 2 проблемы: 1) Если я считываю структуру с файла...

Ошибка при передаче параметров в функцию. Объясните, ребят, пожалуйста, в чем ошибка - Matlab
Есть функция, которую необходимо отобразить в виде линий уровня. Далее с помощью простого симплекс-метода нужно найти минимальное значение...

Ошибка при отладке ActiveX.DLL при передаче объекта форма - Visual Basic
в вызывающем модуле Функция(Me) в ActiveX Sub Функция(frm as Object) typeof frm is form - выдает False в режиме отладки ActiveX...

Ошибка при передаче - HTML, CSS
Здравствуйте. Такая ситуация: имеется сайт, написанный не мной и достаточно давно. Он выложен на хостинг, работает нормально, но....когда я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru