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

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 19 июл 2019, 07:26

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




Начать новую тему Ответить на тему  [ Сообщений: 161 ]  На страницу 1, 2, 3, 4, 5 ... 9  След.
Автор Сообщение
СообщениеДобавлено: 01 сен 2011, 03:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
В этом уроке мы:

- рассмотрим логи приложения и всплывающие сообщения

Click here to read this article!

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


Последний раз редактировалось damager82 28 апр 2017, 10:27, всего редактировалось 10 раз(а).

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

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
Цитата:
у меня почему то вкладка LogCat пустая. вы не подскажите почему?


В All messages есть сообщения? Проверьте, что фильтр верно настроен. Или верно выбран уровень verbose, debug, info...

Если не помогает, то в Eclipse в меню Window > Open Perspective > DDMS.
Слева будет вкладка Devices, там должен отображаться ваш запущенный AVD-эмулятор. Кликните на него мышкой. Это может помочь.

На крайний случай - можно все закрыть и снова открыть.

Цитата:
я перезагрузила комп, AVD-эмулятор появился,LogCat тоже

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


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

Зарегистрирован: 04 мар 2012, 07:41
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
А можно ли как-то получить логи (включить логирование) на устройстве.
Например щёлкнуть в настройках приложения Debug и Log.d начнёт писаться в файлик (который можно попросить отправить пользователя).


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 мар 2012, 13:52 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
Vlady писал(а):
А можно ли как-то получить логи (включить логирование) на устройстве.
Например щёлкнуть в настройках приложения Debug и Log.d начнёт писаться в файлик (который можно попросить отправить пользователя).


Я как-то пытался что-то накопать на эту тему, ничего не нашел. Было бы действительно интересно узнать, как содержимое лога в файл скинуть.

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


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

Зарегистрирован: 01 апр 2012, 16:09
Сообщений: 117
Откуда: Минск
Благодарил (а): 11 раз.
Поблагодарили: 5 раз.
Хм.. меняю параметр duration в методе makeText.. а продолжительность показа всё равно около одной секунды. (Тестирую всё на телефоне). В чём причина? Может от устройства зависит.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 апр 2012, 10:20 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
brucemax писал(а):
Хм.. меняю параметр duration в методе makeText.. а продолжительность показа всё равно около одной секунды. (Тестирую всё на телефоне). В чём причина? Может от устройства зависит.


Ох, пипец! Это провал! Я сам не знаю, с чего я взял, что туда можно миллисекунды передавать.
Пофиксил урок, спасибо большое за указание ошибки!

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


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

Зарегистрирован: 01 апр 2012, 16:09
Сообщений: 117
Откуда: Минск
Благодарил (а): 11 раз.
Поблагодарили: 5 раз.
damager82 писал(а):
brucemax писал(а):
Хм.. меняю параметр duration в методе makeText.. а продолжительность показа всё равно около одной секунды. (Тестирую всё на телефоне). В чём причина? Может от устройства зависит.


Ох, пипец! Это провал! Я сам не знаю, с чего я взял, что туда можно миллисекунды передавать.
Пофиксил урок, спасибо большое за указание ошибки!

Бывает.. :) Да и вообще полезно такие вещи.. в документацию лишний раз лезть заставляет, а это есть хорошо! Вот узнал зато, что чтобы установить время показа надо выполнить setDuration, вот только теперь гадаю где.. ведь это же метод класса Toast, причём не статический, то есть надо создать его экземпляр. Создаю. Выставляю длительность. А что тогда писать в makeText в качестве duration.. ? :?:


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

Зарегистрирован: 18 апр 2012, 17:26
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
damager82 писал(а):
Vlady писал(а):
А можно ли как-то получить логи (включить логирование) на устройстве.
Например щёлкнуть в настройках приложения Debug и Log.d начнёт писаться в файлик (который можно попросить отправить пользователя).


Я как-то пытался что-то накопать на эту тему, ничего не нашел. Было бы действительно интересно узнать, как содержимое лога в файл скинуть.



Это возможно из-за того, что у меня новая версия android плагина для eclipse, но у меня есть кнопка export.
Изображение
Выбираем нужные строки или же все (CRTL+A) и нажимаем на export
Вот что выходит в итоге:
Цитата:
04-18 15:47:18.485: D/myLogs(1240): начинаем
04-18 15:48:54.436: D/myLogs(1350): начинаем
04-18 15:50:49.645: D/myLogs(1386): начинаем
04-18 15:52:21.465: D/myLogs(1421): начинаем


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

Зарегистрирован: 18 апр 2012, 17:26
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
brucemax писал(а):
damager82 писал(а):
brucemax писал(а):
Хм.. меняю параметр duration в методе makeText.. а продолжительность показа всё равно около одной секунды. (Тестирую всё на телефоне). В чём причина? Может от устройства зависит.


Ох, пипец! Это провал! Я сам не знаю, с чего я взял, что туда можно миллисекунды передавать.
Пофиксил урок, спасибо большое за указание ошибки!

Бывает.. :) Да и вообще полезно такие вещи.. в документацию лишний раз лезть заставляет, а это есть хорошо! Вот узнал зато, что чтобы установить время показа надо выполнить setDuration, вот только теперь гадаю где.. ведь это же метод класса Toast, причём не статический, то есть надо создать его экземпляр. Создаю. Выставляю длительность. А что тогда писать в makeText в качестве duration.. ? :?:



Походу тут не получится указывать секунды.. тут или LENGTH_LONG или LENGTH_SHORT, которые принимают значения 1 и 0, это не время в секундах и т.д.
А setDuration можно использовать вот так вот:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. Toast toast= Toast.makeText(this, "Нажата кнопка ОК", Toast.LENGTH_SHORT);
  2. // меняем длительность
  3. toast.setDuration(Toast.LENGTH_LONG);
  4. toast.show();


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 апр 2012, 09:37 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
Adil писал(а):
Это возможно из-за того, что у меня новая версия android плагина для eclipse, но у меня есть кнопка export.


Здесь имелось ввиду запись стандартных логов в файл в устройстве. Чтоб потом этот файл можно было с устройства достать и почитать.
А в Eclipse и CTRL+C работает.

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 май 2012, 09:54 

Зарегистрирован: 19 апр 2012, 14:44
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Доброе утро господа программисты, не так давно занимаюсь программированием под ОС Android, многие проблемы решаю сам, или с вашей помощью, но появилась проблема, простое решение которой не приходит в голову, может кто-то подскажет. Попробуйте в проекте этого урока несколько раз покликать на кнопки, и вы увидите потрясающий результат: все всплывающие подсказки выстраиваются в очередь и показываются подряд, пока не закончатся, как это решить?

Я попробовал таким способом:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. /* Следующая переменная является полем вашего класса (по-сути: псевдоглобальная переменная). */
  2. private Toast toast;                          // описываем ссылочную переменную, которая будет отвечать за наши тосты
  3.  
  4. //--------------- Следующий код идет внутри метода вызывающего тост -----------------------
  5. try {
  6.     toast.cancel();                           // пытаемся отменить существующий тост, если таковой имеется
  7. } catch (NullPointerException e) {
  8.     Log.d(TAG, "тоста нет");                  // логируем тот факт, что мы не осилили отмену
  9. } finally {
  10.     /* При любом исходе создаем новый тост */
  11.     toast = Toast.makeText(this,              // с текущим контекстом,
  12.                        "Нажата кнопка ОК",    // нашим содержанием,
  13.                         Toast.LENGTH_SHORT);  // блекджеком и куртизанками.
  14.     toast.show();                             // покажем тост пользователю
  15. }

Вот как-то так, правда мне кажется, что это колхозно + есть проблема: при многократном нажатии тост тупо перестает отображаться.

Помогите, пожалуйста. =(


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 май 2012, 11:41 
Аватар пользователя

Зарегистрирован: 13 янв 2012, 17:56
Сообщений: 219
Благодарил (а): 3 раз.
Поблагодарили: 6 раз.
Здравствуйте, господин начинающий программист :)
Прежде всего хочу сказать, что то, что вы пытаетесь решать проблемы самостоятельно, крайне похвально и заслуживает уважения.
Теперь по поводу тостов - да, они выводятся друг за другом, т.к. их целью является донести всю информацию до пользователя. Используется (быстрее всего) механизм очереди, т.е. пока отображается текущий тост, все остальные пришедшие ждут окончания его отображения, не перекрывая его и это, фактически, логично и правильно.
Позвольте полюбопытствовать, какую информацию вы выводите с такой частотой или в таком объеме, что предыдущий тост не успевает пропасть, как уже подоспел следующий?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 май 2012, 12:01 

Зарегистрирован: 19 апр 2012, 14:44
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
andev писал(а):
Здравствуйте, господин начинающий программист :)

Не совсем начинающий, я почти год изучал С/С++ перед тем как перейти на Android, потому чувствую себя достаточно образованным для программиста среднего уровня.
andev писал(а):
Прежде всего хочу сказать, что то, что вы пытаетесь решать проблемы самостоятельно, крайне похвально и заслуживает уважения.

Благодарю, правда, зачастую, упираюсь в изобретение велосипедов, но потихоньку исправляюсь. =)
andev писал(а):
Используется (быстрее всего) механизм очереди, т.е. пока отображается текущий тост, все остальные пришедшие ждут окончания его отображения, не перекрывая его и это, фактически, логично и правильно.

Это я понимаю и, собственно, пытаюсь избежать.
andev писал(а):
Позвольте полюбопытствовать, какую информацию вы выводите с такой частотой или в таком объеме, что предыдущий тост не успевает пропасть, как уже подоспел следующий?

Конечно, такая проблема встречалась в С/С++: "ну пользователь же не такой дурак, чтобы вводить символы в числовое поле?". Тут то же самое, дал другу посмотреть свое приложение, Android немного провис, друг стал лупить по клавише, тосты накапливались и выводились еще достаточно долго, потому и собрался решать эту проблему.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 май 2012, 12:38 
Аватар пользователя

Зарегистрирован: 13 янв 2012, 17:56
Сообщений: 219
Благодарил (а): 3 раз.
Поблагодарили: 6 раз.
если у вас вся эта ситуация связана с проверкой корректности ввода то вот пара советов
1) если полей несколько, то проверку делайте за раз, по очереди
2) можно делать проверку на событии TextChanged каждого поля, если захотите так, сброшу готовый код, он немного нетривиален, но простой
3) что бы защититься от нетерпеливых пользователей которые не могут дождаться завершения длительной операции используйте AsyncTask и прелоадером перекрывайте UI на время выполнения асинктакска.
Что делать конкретно с тостами к сожалению не подскажу, в данный момент плотно занят своей задачей, скажу лишь, что чаще бывает лучше пересмотреть варианты оповещения о некорректном вводе, чем пытаться приспособить под это дело компонент с другой логикой работы. Как вариант - делаете проверку корректности в каждом поле на событии изменения текста и если значение для данного поля некорректно то, к примеру, заливку текста или рамки красным.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 16:25 

Зарегистрирован: 17 июл 2012, 16:08
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Lynnfield писал(а):
Доброе утро господа программисты, не так давно занимаюсь программированием под ОС Android, многие проблемы решаю сам, или с вашей помощью, но появилась проблема, простое решение которой не приходит в голову, может кто-то подскажет. Попробуйте в проекте этого урока несколько раз покликать на кнопки, и вы увидите потрясающий результат: все всплывающие подсказки выстраиваются в очередь и показываются подряд, пока не закончатся, как это решить?

........

Помогите, пожалуйста. =(


Я пришел к такому виду:

объявляем наш тост
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         private Toast toast;
  2.  


В методе onCreate инициализируем наш тост
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         @Override
  2.         public void onCreate(Bundle savedInstanceState) {
  3.         ........
  4.         toast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
  5.         ........
  6.         }
  7.  


теперь в необходимом месте мы просто задаем текст и показываем тост
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         toast.setText("Текст");
  2.         toast.show();
  3.  


Теперь при многократном вызове метода show() будет смена текста в тосте без его закрытия и постановки в очередь следующего.


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

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
Ameron писал(а):
Теперь при многократном вызове метода show() будет смена текста в тосте без его закрытия и постановки в очередь следующего.

Круто! Я не знал об этом.

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


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

Зарегистрирован: 16 июл 2012, 21:37
Сообщений: 439
Благодарил (а): 0 раз.
Поблагодарили: 27 раз.
damager82, можна ввести систему репутации? хочется человеку + за тост поставить =)
а еще 6ы хоть какие-то bb теги в 6ыстром ответе =)

_________________
CEO of a company R.id.team


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

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
Finch писал(а):
damager82, можна ввести систему репутации? хочется человеку + за тост поставить =)
а еще 6ы хоть какие-то bb теги в 6ыстром ответе =)

Ок. Гляну, чего можно сделать.

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 15 авг 2012, 22:53 

Зарегистрирован: 15 авг 2012, 21:44
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Ameron писал(а):
Lynnfield писал(а):
Доброе утро господа программисты, не так давно занимаюсь программированием под ОС Android, многие проблемы решаю сам, или с вашей помощью, но появилась проблема, простое решение которой не приходит в голову, может кто-то подскажет. Попробуйте в проекте этого урока несколько раз покликать на кнопки, и вы увидите потрясающий результат: все всплывающие подсказки выстраиваются в очередь и показываются подряд, пока не закончатся, как это решить?

........

Помогите, пожалуйста. =(


Я пришел к такому виду:

объявляем наш тост
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         private Toast toast;
  2.  


В методе onCreate инициализируем наш тост
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         @Override
  2.         public void onCreate(Bundle savedInstanceState) {
  3.         ........
  4.         toast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
  5.         ........
  6.         }
  7.  


теперь в необходимом месте мы просто задаем текст и показываем тост
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         toast.setText("Текст");
  2.         toast.show();
  3.  


Теперь при многократном вызове метода show() будет смена текста в тосте без его закрытия и постановки в очередь следующего.


У меня такой вариант не работает. Экспериментировал с валидацией полей формы. Если пользователь не заполнил поле, то должен выводиться тост с сообщением, какое поле он не заполнил. Соответственно, сообщения должны идти по очереди, но выводится только последнее

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         @SuppressLint("NewApi")
  2.         private void register() {
  3.                 firstname = (EditText) findViewById(R.id.firstname_edit);
  4.                 lastname = (EditText) findViewById(R.id.lastname_edit);
  5.                 age = (EditText) findViewById(R.id.age_edit);
  6.                
  7.                 String fn = firstname.getText().toString();
  8.                 String ln = lastname.getText().toString();
  9.                 String a = age.getText().toString();
  10.                
  11.                 boolean isReg = true;
  12.                
  13.                 toast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
  14.                
  15.                 if (fn.isEmpty()) {
  16.                         toast.setText("Field Firstname can't be empty");
  17.                         toast.show();
  18.                         isReg = false;
  19.                 }
  20.                 if (ln.isEmpty()) {
  21.                         toast.setText("Field Lastname can't be empty");
  22.                         toast.show();
  23.                         isReg = false;
  24.                 }
  25.                 if (a.isEmpty()) {
  26.                         toast.setText("Field Age can't be empty");
  27.                         toast.show();
  28.                         isReg = false;
  29.                 }
  30.  
  31.                 if (isReg) {
  32.                         outText = (TextView) findViewById(R.id.out_text);
  33.                         String out = getResources().getString(R.string.hello_text);
  34.                         outText.setText(String.format(out, fn, ln, a));
  35.                        
  36.                         countClickButton.setVisibility(View.VISIBLE);
  37.                 }
  38.                
  39.         }
  40.  


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 15 авг 2012, 23:11 

Зарегистрирован: 16 июл 2012, 07:47
Сообщений: 235
Благодарил (а): 0 раз.
Поблагодарили: 25 раз.
Так код в цитированный Вами код на то и расчитан - чтобы показывался только последний тост. Вам надо так:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.                 boolean isReg = true;
  2.                 StringBuilder  sb = new StringBuilder();
  3.                 if (fn.isEmpty()) {
  4.                         sb.append("Field Firstname can't be empty\n");
  5.                         isReg = false;
  6.                 }
  7.                 if (ln.isEmpty()) {
  8.                         sb.append("Field Lastname can't be empty\n");
  9.                         isReg = false;
  10.                 }
  11.                 if (a.isEmpty()) {
  12.                         sb.append("Field Age can't be empty\n");
  13.                         isReg = false;
  14.                 }
  15.                 if (isReg) {
  16.                         outText = (TextView) findViewById(R.id.out_text);
  17.                         String out = getResources().getString(R.string.hello_text);
  18.                         outText.setText(String.format(out, fn, ln, a));
  19.                         countClickButton.setVisibility(View.VISIBLE);
  20.                 } else {
  21.                         toast.setText(sb.toString());
  22.                         toast.show();
  23.                 }


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 161 ]  На страницу 1, 2, 3, 4, 5 ... 9  След.

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


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

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