Урок 69. Передаем Parcelable объекты с помощью Intent

Обсуждение уроков
Аватара пользователя
DOS
Сообщения: 7
Зарегистрирован: 04 фев 2013, 16:51

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение DOS » 04 фев 2013, 21:55

Хорошо, не парсебл, значит ли это что сокет не передать в другой activity?
И опять-же какой смысл оборачивать String и int в контейнер если их можно передать напрямую с помощью .putExtra()?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение rezak90 » 04 фев 2013, 23:20

нет, не передать с помощью интента
если у вас целый объект то легче обернуть его целиком чем каждое его поле по отдельности
R.id.team
Политика на форуме запрещена

Аватара пользователя
DOS
Сообщения: 7
Зарегистрирован: 04 фев 2013, 16:51

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение DOS » 05 фев 2013, 10:08

rezak90, Спасибо, понял.
(кнопки "Спасибо" не нашел, пишу текстом, сорри за оффтоп)

Andy_ua
Сообщения: 21
Зарегистрирован: 06 июл 2012, 17:23

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение Andy_ua » 06 фев 2013, 19:52

в чем отличие в передаче объекта через intent как Serializable от Parceable?
как предпочтительнее передавать и в каких случаях?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение damager82 » 12 фев 2013, 17:45

Parcelable интерфейс создан специально для Android. Он был создан как более эффективный, чем Serializable, и для обхода некоторых проблем с Java сериализацией.

http://stackoverflow.com/questions/3323 ... rializable
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Kirhgoph
Сообщения: 1
Зарегистрирован: 11 мар 2013, 13:37

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение Kirhgoph » 11 мар 2013, 13:43

Всем привет. Отличные уроки!

Есть, правда, один вопрос: создал проект для этого урока по инструкции, скопировал все коды как нужно, все вроде бы Ок. Однако при создании нового Activity происходит ошибка на операторе MyObject myObj = (MyObject) getIntent().getParcelableExtra(
MyObject.class.getCanonicalName());
И новое Activity закрывается. При нажатии кнопки создания Activity ситуация повторяется.
getParcelableExtra() возвращает null. Что я делаю не так?
Спасибо

krutoy
Сообщения: 6
Зарегистрирован: 11 апр 2013, 08:45

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение krutoy » 30 апр 2013, 18:35

Parcelable как очередь чтоли? В каком порядке записываем данные, в таком и извлекаем?


RomanNT
Сообщения: 7
Зарегистрирован: 08 июл 2013, 16:58

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение RomanNT » 07 авг 2013, 16:59

Kirhgoph писал(а):создал проект для этого урока по инструкции, скопировал все коды как нужно, все вроде бы Ок. Однако при создании нового Activity происходит ошибка на операторе MyObject myObj = (MyObject) getIntent().getParcelableExtra(
MyObject.class.getCanonicalName());
И новое Activity закрывается. При нажатии кнопки создания Activity ситуация повторяется.
getParcelableExtra() возвращает null.
У меня тоже самое - приложение падает при запуске второго Activity.


RomanNT
Сообщения: 7
Зарегистрирован: 08 июл 2013, 16:58

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение RomanNT » 07 авг 2013, 17:38

RomanNT писал(а):
Kirhgoph писал(а):создал проект для этого урока по инструкции, скопировал все коды как нужно, все вроде бы Ок. Однако при создании нового Activity происходит ошибка на операторе MyObject myObj = (MyObject) getIntent().getParcelableExtra(
MyObject.class.getCanonicalName());
И новое Activity закрывается. При нажатии кнопки создания Activity ситуация повторяется.
getParcelableExtra() возвращает null.
У меня тоже самое - приложение падает при запуске второго Activity.
Разобрался, в чем причина - просто нужно было добавить второе Activity в манифест (см. урок 21).

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение Isaev » 25 окт 2013, 09:46

А если один из параметров Data как его передать?

Код: Выделить всё

    Calendar c = new GregorianCalendar(1979, 11, 30);
    MyObject myObj = new MyObject("text", 1, c.getTime());
...
 public MyObject(String _s, int _i, Date _d) {
    Log.d(LOG_TAG,"MyObject(String _s, int _i, Date _d)");
    s = _s;
    i = _i;
    d = _d;
  }
...
 public void writeToParcel(Parcel parcel, int flags) {
    Log.d(LOG_TAG, "writeToParcel");
    parcel.writeString(s);
    parcel.writeInt(i);
    // как мы её тут записываем
  }
...
 private MyObject(Parcel parcel) {
    Log.d(LOG_TAG, "MyObject(Parcel parcel)");
    s = parcel.readString();
    i = parcel.readInt();
    // и как тут читаем?
  }

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение trew » 25 окт 2013, 10:31

[quote="Isaev"][/quote]
parcel.writeLong(date.getTime()); //write
date = new Date(parcel.readLong()); //read
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение Isaev » 25 окт 2013, 10:47

trew, спасибо... пока ждал сделал вот так:
parcel.writeValue(d); //write
d = (Date) parcel.readValue(null); // read
тоже работает

но не понимаю почему месяц на 1 увеличивается?
//Записываем
Calendar c = new GregorianCalendar(1979, 11, 30);
MyObject myObj = new MyObject("text", 1, c.getTime());

//Получаем
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String reportDate = df.format(myObj.d);
Log.d(LOG_TAG,"myObj: "+myObj.s+", "+myObj.i+", "+reportDate);

выводит 30/12/1979

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение trew » 25 окт 2013, 10:52

А при работе с диалогом DatePickerDialog
viewtopic.php?f=3&t=464&p=19610#p19610
вопросов не возникало :)
Это косяк Android, поэтому в коде +1 к месяцу.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение Isaev » 25 окт 2013, 10:58

trew писал(а):А при работе с диалогом DatePickerDialog
viewtopic.php?f=3&t=464&p=19610#p19610
вопросов не возникало :)
Это косяк Android, поэтому в коде +1 к месяцу.
значит при чтении корректируем сразу

Код: Выделить всё

d = (Date) parcel.readValue(null);
    d.setMonth(d.getMonth()-1);
там возник вопрос поправки временного пояса, т.к. время у меня на 2 часа меньше было)
а месяц не заметил, сейчас гляну

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение Mikhail_dev » 25 окт 2013, 13:11

trew писал(а):А при работе с диалогом DatePickerDialog
viewtopic.php?f=3&t=464&p=19610#p19610
вопросов не возникало :)
Это косяк Android, поэтому в коде +1 к месяцу.
Блин, но почему же вы считаете что это косяк андроида? Почему??? Какое пространство имен у класса? java.util.Calendar? Тогда причем тут андроид??

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение KamiSempai » 25 окт 2013, 14:34

no-- писал(а):
trew писал(а):А при работе с диалогом DatePickerDialog
viewtopic.php?f=3&t=464&p=19610#p19610
вопросов не возникало :)
Это косяк Android, поэтому в коде +1 к месяцу.
Блин, но почему же вы считаете что это косяк андроида? Почему??? Какое пространство имен у класса? java.util.Calendar? Тогда причем тут андроид??
Зеленые совсем. Что с них взять? :D
Настоящие тру программисты с 0 начинают считать, а не с 1.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Урок 69. Передаем Parcelable объекты с помощью Intent

Сообщение altwin » 21 ноя 2013, 16:54

Спасибо за уроки, все доступно, вот только я все же рекомендовал бы использовать @Override в реализации методов интерфейса, для наглядности. В 1.6 возможность добавили - стоит использовать ;).
Изображение

Superoleg
Сообщения: 5
Зарегистрирован: 21 ноя 2013, 12:20

Re: Урок 69. Ошибка

Сообщение Superoleg » 27 дек 2013, 09:27

все вроде бы стартует, а при попытке нажать на кнопку выдает такую ошибку
Вложения
ошибка_69_урок.JPG
ошибка_69_урок.JPG (200.74 КБ) 14637 просмотров

Ответить