Урок 118. Виджеты. Конфигурационный экран. Обновление

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

Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение damager82 » 22 янв 2013, 23:00

В этом уроке:
- настраиваем виджет при размещении
- работаем с view-компонентами виджета при обновлении


Click here to read this article!
Последний раз редактировалось damager82 25 май 2017, 13:39, всего редактировалось 4 раза.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

R_Oleg
Сообщения: 1
Зарегистрирован: 23 окт 2012, 08:01

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение R_Oleg » 29 янв 2013, 10:09

Добрый день!
не могу никак настроить атрибут android.appwidget.action.... для action. В раскрывающемся списке таких атрибутов нет. только android.app.action. и Копался в Android SDK менеджер. Дозагрузил все Tools, Extras, и все пунты для платформ 2.2, 2.3 и 4.1.2 (в нем все кроме Samples -но это ведь примеры.) Но никак нужный атрибут не появляется в списке.
Соотвественно не получается пройти нормально уроки 117 и 118:(
Что можете посоветовать?

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

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение damager82 » 30 янв 2013, 16:20

R_Oleg писал(а):Добрый день!
не могу никак настроить атрибут android.appwidget.action.... для action. В раскрывающемся списке таких атрибутов нет. только android.app.action. и Копался в Android SDK менеджер. Дозагрузил все Tools, Extras, и все пунты для платформ 2.2, 2.3 и 4.1.2 (в нем все кроме Samples -но это ведь примеры.) Но никак нужный атрибут не появляется в списке.
Соотвественно не получается пройти нормально уроки 117 и 118:(
Что можете посоветовать?
Руками пропишите или скопируйте-вставьте из урока.
В списке такого действительно нет.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

olver
Сообщения: 1
Зарегистрирован: 31 янв 2013, 06:06

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение olver » 31 янв 2013, 06:12

Почему-то на видно layout Config.
setContentView(R.layout.config); ошибка

Причем при наборе R.layout.Здесь куча системных лайаутов.

Чую где-то ошибся, но никак не могу понять где :(

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

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение damager82 » 31 янв 2013, 17:06

olver писал(а):Почему-то на видно layout Config.
setContentView(R.layout.config); ошибка

Причем при наборе R.layout.Здесь куча системных лайаутов.

Чую где-то ошибся, но никак не могу понять где :(
Посмотрите секцию Import
Такой строчки нет случайно?
import android.R;
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

perdator
Сообщения: 2
Зарегистрирован: 11 июн 2013, 15:49

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение perdator » 11 июн 2013, 15:54

Почему всегда стремятся в мануалах для новичков описать как можно больше ненужных вещей, оставляя более востребованные и более важные вне внимания?
Последний раз редактировалось perdator 18 июн 2013, 18:53, всего редактировалось 2 раза.


perdator
Сообщения: 2
Зарегистрирован: 11 июн 2013, 15:49

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение perdator » 18 июн 2013, 18:54

no-- писал(а):В каких мануалах именно?
Мануал (или "manual" на англ.) - руководство, пособие и т.д.
Теперь понятно?

Аватара пользователя
shubniggurath
Сообщения: 7
Зарегистрирован: 09 авг 2013, 11:52
Контактная информация:

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение shubniggurath » 13 авг 2013, 14:16

СТроки:
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
MyWidjet.updateWidget(this, appWidgetManager, sp, widgetID);
вызывают падение виджета (андроид 2.3.3)
http://playnoread.ru - леплю, творю, малюю


kimreik
Сообщения: 5
Зарегистрирован: 12 янв 2013, 02:37

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение kimreik » 15 авг 2013, 02:27

Вопрос по RemoteViews. Пишу ежесекундный таймер, через короткое время приложение начинает глючить из-за частого вызова сборшика мусора. Нагуглил ответ на SO, как я понял RemoteViews при каждом вызове добавляет очередь действий, а старую пошлощает GC. Можно ли это как-то обойти или лучше отказаться от идеи ежесекундного обновления?

UPD. Посмотрел внимательнее вопрос на SO и переписал создание RemoteViews внутрь таймера. Логи радуют вызовом уборщика реже чем раз в 100 строк. Но всё равно как-то не аккуратно получается...

Kruler
Сообщения: 28
Зарегистрирован: 27 авг 2013, 13:02

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение Kruler » 08 сен 2013, 21:09

onUpdate вызвался ПЕРЕД конфигурированием (когда настройки виджета еще не были сохранены), но не вызвался ПОСЛЕ завершения работы конфигурационного экрана (когда настройки сохранены и их можно использовать для обновления).
я больше часа пытался понять в чем моя проблема и только потом дочитал статью до этого места :cry: :cry: :cry:

Spinne
Сообщения: 8
Зарегистрирован: 06 мар 2013, 13:22

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение Spinne » 11 сен 2013, 12:45

Возникла у меня проблема. Задача простая - обновлять виджет по событию. Сделал простое приложение, и в андроид 4.х виджет обновляется, а в андроид 2.х не обновляется.
Что я делаю не так?
Вложения
test.widget.rar
(1.27 МБ) 391 скачивание

evgens
Сообщения: 4
Зарегистрирован: 19 сен 2013, 19:07

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение evgens » 19 сен 2013, 19:09

Скажите, как передавать из конфигурационной активити в виджет какую-нибудь картинку? Что использовать, не SharedPreferences же ?

Kruler
Сообщения: 28
Зарегистрирован: 27 авг 2013, 13:02

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение Kruler » 19 сен 2013, 23:54

evgens писал(а):Скажите, как передавать из конфигурационной активити в виджет какую-нибудь картинку? Что использовать, не SharedPreferences же ?
ссылку на картинку из SharedPreferences?) :lol:

Аватара пользователя
Danil
Сообщения: 4
Зарегистрирован: 01 авг 2013, 14:54

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение Danil » 20 сен 2013, 14:55

А как сделать так, чтоб когда устанавливаешь виджет на экран, конфигурационный экран не открывался автоматически?

evgens
Сообщения: 4
Зарегистрирован: 19 сен 2013, 19:07

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение evgens » 20 окт 2013, 08:33

Объясните такую штуку:
На конфиг активити есть ImageView
<ImageView
android:id="@+id/Image1"
android:layout_width="110dp"
android:layout_height="110dp"
android:src="@drawable/image" />

Размер виджета я тоже ставлю 110dp:
android:minHeight="110dp"
android:minWidth="110dp"

Но почему-то на конфиг активити ImageView выглядит визуально гораздо меньше, чем на самом виджете. Почему так?

DeMoZbox
Сообщения: 4
Зарегистрирован: 19 дек 2013, 06:30

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение DeMoZbox » 03 фев 2014, 17:00

есть вопрос по теме виджетов , надо которым бьюсь уже не мало дней .
создаю простой виджет - просто рамка с текстом.
вставляю в активити виджета следующий код, который запустит стандартное приложение-будильник.

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

public void onReceive(Context context, Intent intent)
		{
			Log.d("Meu LOG", "onReceive");
			
			String action = intent.getAction();
			PendingIntent pendingIntent;
			if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action))
			{
				
				RemoteViews views = new RemoteViews(context.getPackageName(),
						R.layout.myma);

				pendingIntent = PendingIntent.getActivity(context, 0,getAlarmPackage(context), 0);
				views.setOnClickPendingIntent(R.id.analogClock1, pendingIntent);

				AppWidgetManager
						.getInstance(context)
						.updateAppWidget(
								intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS),
								views);
			}
		}
		
		public Intent getAlarmPackage(Context context)
		{
			PackageManager packageManager = context.getPackageManager();
			Intent AlarmClockIntent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER);
			
			String clockImpls[][] = {
					{ "Standard Alarm", "com.android.alarmclock",
							"com.android.alarmclock.AlarmClock" },
					{ "HTC Alarm ClockDT", "com.htc.android.worldclock",
							"com.htc.android.worldclock.WorldClockTabControl" },
					{ "Standard Alarm ClockDT", "com.android.deskclock",
							"com.android.deskclock.AlarmClock" },
					{ "Froyo Nexus Alarm ClockDT",
							"com.google.android.deskclock",
							"com.android.deskclock.DeskClock" },
					{ "Moto Blur Alarm ClockDT",
							"com.motorola.blur.alarmclock",
							"com.motorola.blur.alarmclock.AlarmClock" },
					{ "Samsung Galaxy S", "com.sec.android.app.clockpackage",
							"com.sec.android.app.clockpackage.ClockPackage" } };

			boolean foundClockImpl = false;

			for (int i = 0; i < clockImpls.length; i++)
			{
				String packageName = clockImpls[i][1];
				String className = clockImpls[i][2];
				try
				{
					ComponentName cn = new ComponentName(packageName, className);
					packageManager.getActivityInfo(cn,PackageManager.GET_META_DATA);
					AlarmClockIntent.setComponent(cn);
					foundClockImpl = true;
				} catch (NameNotFoundException nf)
				{
				}
			}
			if (foundClockImpl)
			{
				return AlarmClockIntent;
			}
			else
			{
				return null;
			}
		}
работает отлично.

если вставить этот код в приложение с конфигурационным экраном, как в этом уроке, то будильник не запускается.
пробовал сначала создавать простой виджет(без конфигурации), вставлять будильник(на этом этапе будильник запускается), настраивал конфигурацию- запускается активити конфигурации при размещении виджета, но конфигурация не меняет виджет.

короче, по отдельности и конфигурация и будильник работают. вместе нет. =(

нашел то место, которое вызывает конфликт.
в классе ConfigActivity в onClick есть две строчки:

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

 //!!!  AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
  //!!!  MyActivity.updateWidget(this, appWidgetManager, sp, widgetID);
если их закоментить, то виджет не обновляется после экрана конфигурации, но будильник запускается при тапе на виджет.
если раскоментить, то видежт обновляется, но будильник не запускается.
как это обойти?

A.Yes
Сообщения: 1
Зарегистрирован: 26 фев 2014, 15:28

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение A.Yes » 26 фев 2014, 15:33

у меня на эмуляторе при создании виджета выходит Toast = "Application is not installed in phone".
а в логах = "unable to launch app.....MyWidget(has extras): process is bad"
Подскажите что это значит?

denis_po3
Сообщения: 14
Зарегистрирован: 01 ноя 2013, 15:45

Re: Урок 118. Виджеты. Конфигурационный экран. Обновление

Сообщение denis_po3 » 20 май 2014, 09:21

Опечатка:
Например, у вас есть в электронный счет на каком-либо сайте.

Ответить