Форум программистов, компьютерный форум CyberForum.ru

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

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

Ошибка при передаче Parcel - Android

16.05.2013, 20:12. Просмотров 684. Ответов 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());
Подскажите пожалуйста, где ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2013, 20:12     Ошибка при передаче Parcel
Посмотрите здесь:

Ошибка при запуске Android
Android Ошибка при запуске AsyncTask при нажатии на пункт ActionBar
Ошибка при TabHost Android
Не передаются значения при их передаче в другое активити Android
Ошибка при при смене активити Android
Как перехватить пакет (запрос) данных при текущей передаче данных? Android
Android Progressbar при передаче файла на сервер
Android Ошибка при запуске VM VB
Ошибка при построение Android
Android Parcel Unmarshalling unknown type code 7667826 at offset 248
Android "Ошибка при синтаксическом анализе пакета" при скачивании файла
При передаче текста в другую программу нужен только Bluetooth Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.05.2013, 20:37     Ошибка при передаче Parcel #2
Currency это в либе какой-то?
petroff
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 3
16.05.2013, 23:57  [ТС]     Ошибка при передаче Parcel #3
да нет, это мой класс

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

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