如何将多个小部件添加到一个应用程序?

时间:2010-08-20 18:06:17

标签: android widget

我开发了一个具有某些功能的小部件,但有些人要求我创建一个类似的小部件,但功能略有不同。两个小部件看起来都一样,但行为略有不同。我尝试将第二个小部件的不同接收器添加到我的清单文件中。我还创建了一个单独的小部件提供程序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"
/>

请注意,两个小部件的布局必须相同

任何想法都会受到赞赏吗?

谢谢

0 个答案:

没有答案