Виджет не указан в ICS

Я впервые реализую виджет для своего приложения, поэтому я не стал утруждать себя -- использовал онлайн-примеры и создал работающий, очень простой виджет. Он отлично работает в эмуляторе и на моем планшете Honeycomb, но когда я пытаюсь добавить его на домашнюю страницу своего Nexus S с Ice Cream Sandwich, виджет не отображается среди всех других виджетов. Я делаю что-то неправильно? Для сока, вот простые части моего виджета. Как я уже сказал, я просто пытаюсь понять это и расширить его, как только получу базовую структуру.

Манифест:

<receiver android:name=".MyDJAppWidgetProvider" android:label="@string/widget_name">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>
        <meta-data android:name="android.appwidget.provider" android:resource="@xml/mdj_doublewide" />
</receiver>

Виджет:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
  xmlns:android="http://schemas.android.com/apk/res/android">
  android:minWidth="146dip"
  android:minHeight="72dip"
  android:initialLayout="@layout/widget_message"
  android:updatePeriodMillis="86400000"  
</appwidget-provider>

Макет:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:gravity="center"
android:layout_margin="4dp" android:layout_height="fill_parent" 
    android:layout_width="fill_parent">
<TextView android:id="@+id/widget_word"
    android:layout_height="wrap_content" android:layout_width="wrap_content" 
            android:background="@drawable/custom_button"/>

</LinearLayout>

person Harvey    schedule 09.01.2012    source источник


Ответы (1)


Я обнаружил проблему. Это была просто синтаксическая ошибка в определении xml самого виджета. У меня был > после строки xmlns:android, а не в конце инструкции (android:updatePeriodMillis). Мое новое определение выглядит так, и после перезагрузки (как было указано в 4.0 в другом месте) виджет теперь отображается - и является виджетом двойной ширины, как и должно быть.

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:minHeight="72dp"
  android:minWidth="146dp"
  android:initialLayout="@layout/widget_message"
  android:updatePeriodMillis="720000" > 
</appwidget-provider>

Ох, радостный день. Теперь, чтобы этот виджет говорил что-то кроме времени :)

person Harvey    schedule 11.01.2012