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

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

Войти
Регистрация
Восстановить пароль
 
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
#1

Вывод message - Программирование Android

15.07.2016, 22:21. Просмотров 292. Ответов 23
Метки нет (Все метки)

Java
1
2
3
4
5
6
7
8
Message msg = h.obtainMessage();
                    Bundle b = new Bundle();
                    b.putString("KEY1", ParseQuery);
                   // b.putString("KEY2", ParseQueryForeCast);
                    b.putString("KEY3", image);
                    msg.setData(b);
                    h.addto(msg);
                    h.sendMessage(msg);
так я отправляю сообщение через Handler, но когда я вывожу его в лог вот так
Java
1
Log.d("Func", "ADDTO" + msg.toString());
То в логи выводит
ADDTO{ what=0 when=-14h30m45s320ms target=Handler (com.activityexample.user.locationactivity.MyHandler) {412eccc8} }
вот это. А почему? почему оно не выводит то что я установил в Message через Bundle(ну тот нормальный текст)?? Где здесь мое сообщение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2016, 22:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод message (Программирование Android):

Хранение Message[] - Программирование Android
Приветствую. Собственно, нужно как-то хранить email письма. Они у меня в формате Message. Какой способ для этого самый подходящий?...

Installation failed with message -26 - Программирование Android
При запуске приложения появляется вот такое сообщение Installation failed with message -26: Package app.kr.ru.kr new target SDK 22...

Как менять message AlertDialog в зависимости от progress SeekBar? - Программирование Android
Доброго времени суток) В моём приложении при нажатии на TextVeiw появляется AlertDialog, в который я всунул SeekBar. Нужно, чтобы message...

Java.lang.NoSuchFieldError: org.apache.http.message.BasicHeaderValueFormatter.INSTANCE - Программирование Android
Что означает ошибка java.lang.NoSuchFieldError: org.apache.http.message.BasicHeaderValueFormatter.INSTANCE Выходит касательно кода,...

Не могу в сообщении $message включить вывод содержимого массивов $error и $_SERVER - PHP
<?php register_shutdown_function('shutdown_notify'); function shutdown_notify(){ $error = error_get_last(); if(!empty($error)...

И снова проблема со Struts (validate): Cannot find message resources under key org.apache.struts.action.Message - Java
Имеем imdex.jsp: <%@ page language='java' %> <%@ taglib uri='/WEB-INF/struts-html.tld' prefix='html' %> <%@ taglib...

23
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
15.07.2016, 22:33 #2
Если в холодильник в углу положить колбасу, а потом спросить что у нас в углу, ответ будет холодильник, а не колбаса. Bundle надо извлечь из msg. getData вроде, если не ошибаюсь...
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
15.07.2016, 23:38  [ТС] #3
А если у меня есть поле private static Message messages; внутри класса MyHandler. А сам объект MyHandler определяется во фрагменте который пересоздается. То static поле должно же сохранять свое значение даже когда фрагмент пересоздастся, даже когда объект MyHandler будет уничтожен верно же?

Добавлено через 3 минуты
просто я в функции присваиваю значение этой статической переменной, но когда объект MyHandler уничтожается - это поле тоже опустошается почему - то?
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
16.07.2016, 00:23 #4
Если колбасу запретить есть, она будет static. Но если уничтожить холодильник, колбаса тоже уничтожится.
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
16.07.2016, 01:06  [ТС] #5
Ну и как тогда решить эту проблему? Я так понимаю Bundle уничтожается при пересоздании. Как избежать этого уничтожения? Мне нужно сохранить переменную. подскажите пожалуйста?
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
16.07.2016, 01:09 #6
Маловато данных. Что там куда передаётся, что пересоздается, что уничтожается...
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
16.07.2016, 01:36  [ТС] #7
Ну есть фрагмент он пересоздается. Есть Handler(вернее MyHandler который расширяет стандартный) он является полем этого фрагмента(глобальной переменной в нем) и по сему уничтожается при пересоздании вместе с фрагментом. Есть обработчик(интерфейс у которого есть метод doAction). Так вот фрагмент имплиментирует этот интерфейс и реализует doAction в котором устанавливает текст в TextView и загружает картинку в фон фрагмента. Обработчик устанавливается на Handler в onstart фрагмента и отменяется в onStop. Есть фоновый поток который делает сетевой запрос, как в onCreate() так и по нажатию кнопки во фрагменте. В ответ на этот запрос приходит JSON парсим его и выделяем ссылку на фоновое изображение и текст для TextView. В сеттере обработчика(котрый вызывается в onstart) мы должны проверить если есть сообщение для Handlerа вызываем метод handleMessages(). В handleMessages() проверяем на null обработчик. И если все ОК вызываем doAction. Вот поэтому мне и нужно сохранить где то в своем классе MyHandler последнее сообщение для Handler, чтобы после пересоздания его обработать вот. Но сообщение передается через Bundle. А как это можно сделать ? Или можно как то воспользоваться стандартным hasMessages() но дело в том что она тоже на вход параметр принимает код сообщения. И handleMessages чтобы вызвать надо на вход сообщение передать. Вот и думаю как все грамотно завершить здесь?

Добавлено через 1 минуту
Без пересоздания все работает отлично. Интересен вариант с пересозданием.

Добавлено через 1 минуту
Сообщения для Handlerа мы посылаем из потока естественно(это то что нужно уже на экране отобразить)
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
16.07.2016, 01:37 #8
Откуда приходит сообщение для handler и куда передаётся?
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
16.07.2016, 01:41  [ТС] #9
А Bundle тоже уничтожается при пересоздании? Просто через Bundle и идет отправка сообщений из потока Handlerу

Добавлено через 30 секунд
Есть фоновый поток, который делает сетевой запрос

Добавлено через 15 секунд
И парсинг JSON в нем

Добавлено через 36 секунд
Вот результат этого всего мы передаем в Handler который во фрагменте, то есть в UI потоке

Добавлено через 25 секунд
через sendMessages

Добавлено через 1 минуту
То есть передаем чисто ссылку на изображение и текстовые данные, которые нужно только отобразить
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
16.07.2016, 01:42 #10
Как-то сумбурно все. Чего ради фрагмент пересоздается?
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
16.07.2016, 01:44  [ТС] #11
Ну возможность разметку добавить для горизонтальной ориентации. Да и так он может пересоздаваться не только при поворотах. При поворотах то можно запретить пересоздание. А есть же и другие ситуации когда пересоздается активити и фрагмент.
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
16.07.2016, 01:44 #12
Нельзя вв Asynctask распарсить Json и кинуть Intent, а фрагмент пусть его ловит, будь он хоть 100500 раз пересозданный?
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
16.07.2016, 01:47  [ТС] #13
Можно конечно сообщение достать из Bunndle методом getData перевести String и сделать это статик вот думаю

Добавлено через 1 минуту
Нельзя вв Asynctask распарсить Json и кинуть Intent, а фрагмент пусть его ловит, будь он хоть 100500 раз пересозданный?
Это как тогда во фрагменте ресивер нужен. И потом интент может быть пропущен из за пересоздания.

Добавлено через 34 секунды
Интент пойдет, а фрагмент пересоздастся.
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
16.07.2016, 01:48 #14
А в чем проблема ресивер сделать.
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
16.07.2016, 01:51  [ТС] #15
то есть интент может пойти в тот момент когда не факт что фрагмент еще существует и поймает его. Эта вероятность тоже есть. Разве нет?

Добавлено через 36 секунд
А ресивер внутри фрагмента существует тоже.

Добавлено через 37 секунд
То есть в момент самого пересоздания может пойти интент а это не очень хорошо

Добавлено через 1 минуту
Можно либо в статике либо в аппликейшен, либо в SharedPreferences данные сохранять и после пересоздания от туда вытаскивать и подгружать. Тоже вариант?
0
16.07.2016, 01:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2016, 01:51
Привет! Вот еще темы с ответами:

Ошибка в xml-файле: cannot load response message. Invalid SOAP message. Only one top level element is allowed in an XML document. - C# ASP.NET
Всем добрый день. Хочу попросить помощи по следующей проблеме: Хочу сделать SOAP-запрос Set Client =...

Вывод данных из базы данных на message dialog - Java БД
Здравствуйте! Я чайник в программировании, мне нужно написать программу, которая считывает вводимые данные и в зависимости от их значения...

Message - C#
как в форме вивести сообщение в новом окне, например при нажатии кнопки? (C#)

Do not show this message again - Windows 7
Привет всем. Вопрос на миллион, поставил галочку в сообщении на "Do not show this message again" и логично что оно теперь не появляется, а...


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

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

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