Google Android - это несложно • Просмотр темы - Урок 69. Передаем Parcelable объекты с помощью Intent

Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 16 авг 2018, 18:33

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 04 фев 2013, 21:55 
Аватар пользователя

Зарегистрирован: 04 фев 2013, 16:51
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хорошо, не парсебл, значит ли это что сокет не передать в другой activity?
И опять-же какой смысл оборачивать String и int в контейнер если их можно передать напрямую с помощью .putExtra()?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 фев 2013, 23:20 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
нет, не передать с помощью интента
если у вас целый объект то легче обернуть его целиком чем каждое его поле по отдельности

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 фев 2013, 10:08 
Аватар пользователя

Зарегистрирован: 04 фев 2013, 16:51
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
rezak90, Спасибо, понял.
(кнопки "Спасибо" не нашел, пишу текстом, сорри за оффтоп)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 фев 2013, 19:52 

Зарегистрирован: 06 июл 2012, 17:23
Сообщений: 21
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
в чем отличие в передаче объекта через intent как Serializable от Parceable?
как предпочтительнее передавать и в каких случаях?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 фев 2013, 17:45 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
Parcelable интерфейс создан специально для Android. Он был создан как более эффективный, чем Serializable, и для обхода некоторых проблем с Java сериализацией.

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

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 мар 2013, 13:43 

Зарегистрирован: 11 мар 2013, 13:37
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Всем привет. Отличные уроки!

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 30 апр 2013, 18:35 

Зарегистрирован: 11 апр 2013, 08:45
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Parcelable как очередь чтоли? В каком порядке записываем данные, в таком и извлекаем?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 30 апр 2013, 21:40 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
Да, конечно.

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 07 авг 2013, 16:59 

Зарегистрирован: 08 июл 2013, 16:58
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Kirhgoph писал(а):
создал проект для этого урока по инструкции, скопировал все коды как нужно, все вроде бы Ок. Однако при создании нового Activity происходит ошибка на операторе MyObject myObj = (MyObject) getIntent().getParcelableExtra(
MyObject.class.getCanonicalName());
И новое Activity закрывается. При нажатии кнопки создания Activity ситуация повторяется.
getParcelableExtra() возвращает null.


У меня тоже самое - приложение падает при запуске второго Activity.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 07 авг 2013, 17:16 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
Значит ничего не передаете. Всё просто.

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 07 авг 2013, 17:38 

Зарегистрирован: 08 июл 2013, 16:58
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
RomanNT писал(а):
Kirhgoph писал(а):
создал проект для этого урока по инструкции, скопировал все коды как нужно, все вроде бы Ок. Однако при создании нового Activity происходит ошибка на операторе MyObject myObj = (MyObject) getIntent().getParcelableExtra(
MyObject.class.getCanonicalName());
И новое Activity закрывается. При нажатии кнопки создания Activity ситуация повторяется.
getParcelableExtra() возвращает null.


У меня тоже самое - приложение падает при запуске второго Activity.


Разобрался, в чем причина - просто нужно было добавить второе Activity в манифест (см. урок 21).


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 окт 2013, 09:46 
Аватар пользователя

Зарегистрирован: 03 сен 2013, 09:39
Сообщений: 145
Откуда: Германия
Благодарил (а): 18 раз.
Поблагодарили: 1 раз.
А если один из параметров Data как его передать?
Код: [ Загрузить ] [ Скрыть ]
  1.     Calendar c = new GregorianCalendar(1979, 11, 30); 
  2.     MyObject myObj = new MyObject("text", 1, c.getTime()); 
  3. ... 
  4. public MyObject(String _s, int _i, Date _d) { 
  5.     Log.d(LOG_TAG,"MyObject(String _s, int _i, Date _d)"); 
  6.     s = _s; 
  7.     i = _i; 
  8.     d = _d; 
  9.   } 
  10. ... 
  11. public void writeToParcel(Parcel parcel, int flags) { 
  12.     Log.d(LOG_TAG, "writeToParcel"); 
  13.     parcel.writeString(s); 
  14.     parcel.writeInt(i); 
  15.     // как мы её тут записываем 
  16.   } 
  17. ... 
  18. private MyObject(Parcel parcel) { 
  19.     Log.d(LOG_TAG, "MyObject(Parcel parcel)"); 
  20.     s = parcel.readString(); 
  21.     i = parcel.readInt(); 
  22.     // и как тут читаем? 
  23.   } 


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 окт 2013, 10:31 
Аватар пользователя

Зарегистрирован: 28 сен 2013, 17:34
Сообщений: 450
Благодарил (а): 8 раз.
Поблагодарили: 110 раз.
[quote="Isaev"][/quote]
parcel.writeLong(date.getTime()); //write
date = new Date(parcel.readLong()); //read

_________________
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 окт 2013, 10:47 
Аватар пользователя

Зарегистрирован: 03 сен 2013, 09:39
Сообщений: 145
Откуда: Германия
Благодарил (а): 18 раз.
Поблагодарили: 1 раз.
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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 окт 2013, 10:52 
Аватар пользователя

Зарегистрирован: 28 сен 2013, 17:34
Сообщений: 450
Благодарил (а): 8 раз.
Поблагодарили: 110 раз.
А при работе с диалогом DatePickerDialog
http://forum.startandroid.ru/viewtopic.php?f=3&t=464&p=19610#p19610
вопросов не возникало :)
Это косяк Android, поэтому в коде +1 к месяцу.

_________________
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 окт 2013, 10:58 
Аватар пользователя

Зарегистрирован: 03 сен 2013, 09:39
Сообщений: 145
Откуда: Германия
Благодарил (а): 18 раз.
Поблагодарили: 1 раз.
trew писал(а):
А при работе с диалогом DatePickerDialog
http://forum.startandroid.ru/viewtopic.php?f=3&t=464&p=19610#p19610
вопросов не возникало :)
Это косяк Android, поэтому в коде +1 к месяцу.

значит при чтении корректируем сразу
Код: [ Загрузить ] [ Скрыть ]
  1. d = (Date) parcel.readValue(null); 
  2.     d.setMonth(d.getMonth()-1); 

там возник вопрос поправки временного пояса, т.к. время у меня на 2 часа меньше было)
а месяц не заметил, сейчас гляну


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 окт 2013, 13:11 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
trew писал(а):
А при работе с диалогом DatePickerDialog
http://forum.startandroid.ru/viewtopic.php?f=3&t=464&p=19610#p19610
вопросов не возникало :)
Это косяк Android, поэтому в коде +1 к месяцу.

Блин, но почему же вы считаете что это косяк андроида? Почему??? Какое пространство имен у класса? java.util.Calendar? Тогда причем тут андроид??

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 окт 2013, 14:34 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
no-- писал(а):
trew писал(а):
А при работе с диалогом DatePickerDialog
http://forum.startandroid.ru/viewtopic.php?f=3&t=464&p=19610#p19610
вопросов не возникало :)
Это косяк Android, поэтому в коде +1 к месяцу.

Блин, но почему же вы считаете что это косяк андроида? Почему??? Какое пространство имен у класса? java.util.Calendar? Тогда причем тут андроид??
Зеленые совсем. Что с них взять? :D
Настоящие тру программисты с 0 начинают считать, а не с 1.

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 21 ноя 2013, 16:54 
Аватар пользователя

Зарегистрирован: 13 ноя 2013, 14:46
Сообщений: 1956
Благодарил (а): 10 раз.
Поблагодарили: 275 раз.
Спасибо за уроки, все доступно, вот только я все же рекомендовал бы использовать @Override в реализации методов интерфейса, для наглядности. В 1.6 возможность добавили - стоит использовать ;).

_________________
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 69. Ошибка
СообщениеДобавлено: 27 дек 2013, 09:27 

Зарегистрирован: 21 ноя 2013, 12:20
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
все вроде бы стартует, а при попытке нажать на кнопку выдает такую ошибку


Вложения:
ошибка_69_урок.JPG
ошибка_69_урок.JPG [ 200.74 KiB | Просмотров: 4327 ]
Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB