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

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

Добавлено: 22 янв 2013, 23:00
damager82
В этом уроке:
- настраиваем виджет при размещении
- работаем с view-компонентами виджета при обновлении


Click here to read this article!

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

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

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

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

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

Добавлено: 31 янв 2013, 06:12
olver
Почему-то на видно layout Config.
setContentView(R.layout.config); ошибка

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

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

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

Добавлено: 31 янв 2013, 17:06
damager82
olver писал(а):Почему-то на видно layout Config.
setContentView(R.layout.config); ошибка

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

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

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

Добавлено: 11 июн 2013, 15:54
perdator
Почему всегда стремятся в мануалах для новичков описать как можно больше ненужных вещей, оставляя более востребованные и более важные вне внимания?

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

Добавлено: 11 июн 2013, 16:07
Mikhail_dev
В каких мануалах именно?

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

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

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

Добавлено: 13 авг 2013, 14:16
shubniggurath
СТроки:
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
MyWidjet.updateWidget(this, appWidgetManager, sp, widgetID);
вызывают падение виджета (андроид 2.3.3)

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

Добавлено: 13 авг 2013, 14:27
Mikhail_dev
Логи где?

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

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

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

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

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

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

Добавлено: 11 сен 2013, 12:45
Spinne
Возникла у меня проблема. Задача простая - обновлять виджет по событию. Сделал простое приложение, и в андроид 4.х виджет обновляется, а в андроид 2.х не обновляется.
Что я делаю не так?

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

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

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

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

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

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

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

Добавлено: 20 окт 2013, 08:33
evgens
Объясните такую штуку:
На конфиг активити есть 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 выглядит визуально гораздо меньше, чем на самом виджете. Почему так?

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

Добавлено: 03 фев 2014, 17:00
DeMoZbox
есть вопрос по теме виджетов , надо которым бьюсь уже не мало дней .
создаю простой виджет - просто рамка с текстом.
вставляю в активити виджета следующий код, который запустит стандартное приложение-будильник.

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

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);
если их закоментить, то виджет не обновляется после экрана конфигурации, но будильник запускается при тапе на виджет.
если раскоментить, то видежт обновляется, но будильник не запускается.
как это обойти?

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

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

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

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