Урок 118. Виджеты. Конфигурационный экран. Обновление
Урок 118. Виджеты. Конфигурационный экран. Обновление
В этом уроке:
- настраиваем виджет при размещении
- работаем с view-компонентами виджета при обновлении
Click here to read this article!
- настраиваем виджет при размещении
- работаем с view-компонентами виджета при обновлении
Click here to read this article!
Последний раз редактировалось damager82 25 май 2017, 13:39, всего редактировалось 4 раза.
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
Добрый день!
не могу никак настроить атрибут android.appwidget.action.... для action. В раскрывающемся списке таких атрибутов нет. только android.app.action. и Копался в Android SDK менеджер. Дозагрузил все Tools, Extras, и все пунты для платформ 2.2, 2.3 и 4.1.2 (в нем все кроме Samples -но это ведь примеры.) Но никак нужный атрибут не появляется в списке.
Соотвественно не получается пройти нормально уроки 117 и 118:(
Что можете посоветовать?
не могу никак настроить атрибут android.appwidget.action.... для action. В раскрывающемся списке таких атрибутов нет. только android.app.action. и Копался в Android SDK менеджер. Дозагрузил все Tools, Extras, и все пунты для платформ 2.2, 2.3 и 4.1.2 (в нем все кроме Samples -но это ведь примеры.) Но никак нужный атрибут не появляется в списке.
Соотвественно не получается пройти нормально уроки 117 и 118:(
Что можете посоветовать?
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
Руками пропишите или скопируйте-вставьте из урока.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. Виджеты. Конфигурационный экран. Обновление
Почему-то на видно layout Config.
setContentView(R.layout.config); ошибка
Причем при наборе R.layout.Здесь куча системных лайаутов.
Чую где-то ошибся, но никак не могу понять где
setContentView(R.layout.config); ошибка
Причем при наборе R.layout.Здесь куча системных лайаутов.
Чую где-то ошибся, но никак не могу понять где
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
Посмотрите секцию Importolver писал(а):Почему-то на видно layout Config.
setContentView(R.layout.config); ошибка
Причем при наборе R.layout.Здесь куча системных лайаутов.
Чую где-то ошибся, но никак не могу понять где
Такой строчки нет случайно?
import android.R;
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
Почему всегда стремятся в мануалах для новичков описать как можно больше ненужных вещей, оставляя более востребованные и более важные вне внимания?
Последний раз редактировалось perdator 18 июн 2013, 18:53, всего редактировалось 2 раза.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
Мануал (или "manual" на англ.) - руководство, пособие и т.д.no-- писал(а):В каких мануалах именно?
Теперь понятно?
- shubniggurath
- Сообщения: 7
- Зарегистрирован: 09 авг 2013, 11:52
- Контактная информация:
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
СТроки:
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
MyWidjet.updateWidget(this, appWidgetManager, sp, widgetID);
вызывают падение виджета (андроид 2.3.3)
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
MyWidjet.updateWidget(this, appWidgetManager, sp, widgetID);
вызывают падение виджета (андроид 2.3.3)
http://playnoread.ru - леплю, творю, малюю
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
Вопрос по RemoteViews. Пишу ежесекундный таймер, через короткое время приложение начинает глючить из-за частого вызова сборшика мусора. Нагуглил ответ на SO, как я понял RemoteViews при каждом вызове добавляет очередь действий, а старую пошлощает GC. Можно ли это как-то обойти или лучше отказаться от идеи ежесекундного обновления?
UPD. Посмотрел внимательнее вопрос на SO и переписал создание RemoteViews внутрь таймера. Логи радуют вызовом уборщика реже чем раз в 100 строк. Но всё равно как-то не аккуратно получается...
UPD. Посмотрел внимательнее вопрос на SO и переписал создание RemoteViews внутрь таймера. Логи радуют вызовом уборщика реже чем раз в 100 строк. Но всё равно как-то не аккуратно получается...
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
я больше часа пытался понять в чем моя проблема и только потом дочитал статью до этого местаonUpdate вызвался ПЕРЕД конфигурированием (когда настройки виджета еще не были сохранены), но не вызвался ПОСЛЕ завершения работы конфигурационного экрана (когда настройки сохранены и их можно использовать для обновления).
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
Возникла у меня проблема. Задача простая - обновлять виджет по событию. Сделал простое приложение, и в андроид 4.х виджет обновляется, а в андроид 2.х не обновляется.
Что я делаю не так?
Что я делаю не так?
- Вложения
-
- test.widget.rar
- (1.27 МБ) 544 скачивания
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
Скажите, как передавать из конфигурационной активити в виджет какую-нибудь картинку? Что использовать, не SharedPreferences же ?
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
ссылку на картинку из SharedPreferences?)evgens писал(а):Скажите, как передавать из конфигурационной активити в виджет какую-нибудь картинку? Что использовать, не SharedPreferences же ?
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
А как сделать так, чтоб когда устанавливаешь виджет на экран, конфигурационный экран не открывался автоматически?
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
Объясните такую штуку:
На конфиг активити есть 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 выглядит визуально гораздо меньше, чем на самом виджете. Почему так?
На конфиг активити есть 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. Виджеты. Конфигурационный экран. Обновление
есть вопрос по теме виджетов , надо которым бьюсь уже не мало дней .
создаю простой виджет - просто рамка с текстом.
вставляю в активити виджета следующий код, который запустит стандартное приложение-будильник.
работает отлично.
если вставить этот код в приложение с конфигурационным экраном, как в этом уроке, то будильник не запускается.
пробовал сначала создавать простой виджет(без конфигурации), вставлять будильник(на этом этапе будильник запускается), настраивал конфигурацию- запускается активити конфигурации при размещении виджета, но конфигурация не меняет виджет.
короче, по отдельности и конфигурация и будильник работают. вместе нет. =(
нашел то место, которое вызывает конфликт.
в классе ConfigActivity в onClick есть две строчки:
если их закоментить, то виджет не обновляется после экрана конфигурации, но будильник запускается при тапе на виджет.
если раскоментить, то видежт обновляется, но будильник не запускается.
как это обойти?
создаю простой виджет - просто рамка с текстом.
вставляю в активити виджета следующий код, который запустит стандартное приложение-будильник.
Код: Выделить всё
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. Виджеты. Конфигурационный экран. Обновление
у меня на эмуляторе при создании виджета выходит Toast = "Application is not installed in phone".
а в логах = "unable to launch app.....MyWidget(has extras): process is bad"
Подскажите что это значит?
а в логах = "unable to launch app.....MyWidget(has extras): process is bad"
Подскажите что это значит?
Re: Урок 118. Виджеты. Конфигурационный экран. Обновление
Опечатка:
Например, у вас есть в электронный счет на каком-либо сайте.