Страница 2 из 3

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

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

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

Добавлено: 04 фев 2013, 23:20
rezak90
нет, не передать с помощью интента
если у вас целый объект то легче обернуть его целиком чем каждое его поле по отдельности

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

Добавлено: 05 фев 2013, 10:08
DOS
rezak90, Спасибо, понял.
(кнопки "Спасибо" не нашел, пишу текстом, сорри за оффтоп)

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

Добавлено: 06 фев 2013, 19:52
Andy_ua
в чем отличие в передаче объекта через intent как Serializable от Parceable?
как предпочтительнее передавать и в каких случаях?

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

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

http://stackoverflow.com/questions/3323 ... rializable

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

Добавлено: 11 мар 2013, 13:43
Kirhgoph
Всем привет. Отличные уроки!

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

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

Добавлено: 30 апр 2013, 18:35
krutoy
Parcelable как очередь чтоли? В каком порядке записываем данные, в таком и извлекаем?

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

Добавлено: 30 апр 2013, 21:40
Mikhail_dev
Да, конечно.

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

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

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

Добавлено: 07 авг 2013, 17:16
Mikhail_dev
Значит ничего не передаете. Всё просто.

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

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

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

Добавлено: 25 окт 2013, 09:46
Isaev
А если один из параметров 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();
    // и как тут читаем?
  }

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

Добавлено: 25 окт 2013, 10:31
trew
[quote="Isaev"][/quote]
parcel.writeLong(date.getTime()); //write
date = new Date(parcel.readLong()); //read

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

Добавлено: 25 окт 2013, 10:47
Isaev
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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 27 дек 2013, 09:27
Superoleg
все вроде бы стартует, а при попытке нажать на кнопку выдает такую ошибку