Я разработал виджет с определенной функциональностью, но некоторые люди просили меня создать похожий виджет, но с немного другой функциональностью. Оба виджета будут выглядеть одинаково, но вести себя немного по-разному. Я попытался добавить другой приемник для второго виджета в свой файл манифеста. Я также создал отдельный xml-файл поставщика виджетов, и у меня есть отдельный класс, который реализует AppWidgetProvider с различными функциями. Тем не менее, когда я добавляю второй виджет на домашнюю страницу, кажется, что он использует функциональность первого виджета, а не новую функциональность.
Вот часть кода:
Мне нужно разделить классы, расширяющие AppWidgetProvider (по одному для каждого виджета). Имена классов: iContacts и iContactsQuickDial.
Разница между этими двумя классами заключается в методе OnReceive, который реализует другую логику. Остальные методы точно такие же.
Приемники манифеста:
<receiver android:name=".iContacts" android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.CONFIGURATION_CHANGED" />
<action android:name="com.mesa.icontacts.ConfigureContacsActivity.ACTION_UPDATE_WIDGET" />
<action android:name="com.mesa.icontacts.iContacts.ACTION_WIDGET_SHOW_CONTACT_1" />
<action android:name="com.mesa.icontacts.iContacts.ACTION_WIDGET_SHOW_CONTACT_2" />
<action android:name="com.mesa.icontacts.iContacts.ACTION_WIDGET_SHOW_CONTACT_3" />
<action android:name="com.mesa.icontacts.iContacts.ACTION_WIDGET_SHOW_CONTACT_4" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/icontacts_widget_provider" />
</receiver>
<receiver android:name=".iContactsQuickDial"
android:label="@string/app_name_quick_dial">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.CONFIGURATION_CHANGED" />
<action android:name="com.mesa.icontacts.ConfigureContacsActivity.ACTION_UPDATE_WIDGET" />
<action android:name="com.mesa.icontacts.iContacts.ACTION_WIDGET_SHOW_CONTACT_1" />
<action android:name="com.mesa.icontacts.iContacts.ACTION_WIDGET_SHOW_CONTACT_2" />
<action android:name="com.mesa.icontacts.iContacts.ACTION_WIDGET_SHOW_CONTACT_3" />
<action android:name="com.mesa.icontacts.iContacts.ACTION_WIDGET_SHOW_CONTACT_4" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/icontacts_quick_dial_widget_provider" />
</receiver>
Оба виджета используют одно и то же действие по настройке, поскольку эта логика не меняется.
Оба провайдера: icontacts_widget_provider:
<?xml version="1.0" encoding="UTF-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="300dip"
android:minHeight="75dip"
android:initialLayout="@layout/main"
/>
icontacts_quick_dial_widget_provider
<?xml version="1.0" encoding="UTF-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="300dip"
android:minHeight="75dip"
android:initialLayout="@layout/main"
/>
Обратите внимание, что макет одинаков для обоих, поскольку оба виджета должны выглядеть одинаково.
Любые идеи были бы хорошы?
Спасибо