Android WidgetProvider 复制

发布于 2024-12-09 20:28:40 字数 1476 浏览 4 评论 0原文

我制作了一个具有可拉伸布局的简单小部件,并希望允许用户使用相同的布局和相同的小部件提供程序类来放置不同大小的小部件。

我发现,我需要创建 4 个 widget_provider_x_y.xml 文件(x 和 y 的值为 2,2 2,3 3,2 3,3),除了宽度和高度之外,它们非常相似。

我还发现,我需要创建完全相同的 WidgetProvider 类的多个副本(名称除外)。如果我尝试使用单个 WidgetProvider 类 - 我将在小部件列表中仅看到一个小部件。

我有一个问题: - 为什么我需要复制java类?是一样的,因为布局是一样的,而且我不想在需要同时更新的项目中再有 4 个文件。

这是我的 androidManifest.xml 的一部分:

    <receiver android:name=".SimpleNoteWidgetProvider_3_2" android:label="@string/app_widget_3_2">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
            <action android:name="ACTION_WIDGET_UPDATE_FROM_ACTIVITY"/>
            <action android:name="ACTION_WIDGET_UPDATE_FROM_WIDGET"/>
        </intent-filter>
        <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_provider_3_2"/>
    </receiver>
    <receiver android:name=".SimpleNoteWidgetProvider_3_3" android:label="@string/app_widget_3_3">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
            <action android:name="ACTION_WIDGET_UPDATE_FROM_ACTIVITY"/>
            <action android:name="ACTION_WIDGET_UPDATE_FROM_WIDGET"/>
        </intent-filter>
        <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_provider_3_3"/>
    </receiver>

I have made a simple widget with stretchable layout, and want to allow users to put widgets with different sizes using the same layout and the same widget provider class.

I have found, that I need to create 4 widget_provider_x_y.xml files (x and y are values 2,2 2,3 3,2 3,3) that is very similar except width and height.

Also I have found, that I need to create multiple copies of WidgetProvider classes that is exactly the same (except names). If I try to use single WidgetProvider class - I will see only one widget in widgets list.

I have a question:
- why do I need to copy java class? It is the same, because layout is the same, and I do not want to have 4 more files in projects that I need to update simultaneously.

Here is a part of my androidManifest.xml:

    <receiver android:name=".SimpleNoteWidgetProvider_3_2" android:label="@string/app_widget_3_2">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
            <action android:name="ACTION_WIDGET_UPDATE_FROM_ACTIVITY"/>
            <action android:name="ACTION_WIDGET_UPDATE_FROM_WIDGET"/>
        </intent-filter>
        <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_provider_3_2"/>
    </receiver>
    <receiver android:name=".SimpleNoteWidgetProvider_3_3" android:label="@string/app_widget_3_3">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
            <action android:name="ACTION_WIDGET_UPDATE_FROM_ACTIVITY"/>
            <action android:name="ACTION_WIDGET_UPDATE_FROM_WIDGET"/>
        </intent-filter>
        <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_provider_3_3"/>
    </receiver>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别靠近我心 2024-12-16 20:28:40

您不必复制 WidgetProvider 类 n 次即可获得 n 个小部件大小。只需从主 WidgetProvider 类继承,如下所示

public class SimpleNoteWidgetProvider_3_2 extends SimpleNoteWidgetProvider {

}

public class SimpleNoteWidgetProvider_3_3 extends SimpleNoteWidgetProvider {

}

You don't have to copy your WidgetProvider class n times to get n widget sizes. Just inherit from the main WidgetProvider class like this:

public class SimpleNoteWidgetProvider_3_2 extends SimpleNoteWidgetProvider {

}

and

public class SimpleNoteWidgetProvider_3_3 extends SimpleNoteWidgetProvider {

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文