不要创建小部件

时间:2014-04-09 09:13:42

标签: android android-widget

您好,这是一个简单的问题

我创建小部件并测试这是我的简单代码:

@Override
public void onReceive(Context context, Intent intent) {
        ComponentName thisAppWidget = new ComponentName(context, MyWidget.class);
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
        int ids[] = appWidgetManager.getAppWidgetIds(thisAppWidget);

        Log.d(" widget ids : " + Arrays.toString(ids) );


        setResultCode(0);
}

但我在主屏幕上有红色广场..?

我的小部件提供商配置:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="80dp"
    android:minHeight="80dp"

    android:previewImage="@drawable/example_appwidget_preview"

    android:resizeMode="horizontal|vertical"
    android:widgetCategory="home_screen|keyguard"
    >
</appwidget-provider>

2 个答案:

答案 0 :(得分:1)

But i have got red square on home screen .. ?

这可能是您在widget provider xml中设置的预览图像。

在主屏幕中添加窗口小部件时,将调用onUpdate()方法,您可以在此处为窗口小部件设置远程布局。

public class CustomAppWidgetProvider extends AppWidgetProvider{
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int N = appWidgetIds.length;

    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];

        RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.widget_layout);
        appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
    }
    super.onUpdate(context, appWidgetManager, appWidgetIds);
 }

}

您还可以设置在单击窗口小部件中的整个窗口小部件或子项时要调用的活动/服务的待处理意图

  Intent intent = new Intent(context, MainActivity.class);
  PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,0);
  remoteViews.setOnClickPendingIntent(R.id.imageView1,pendingIntent);

因此,在窗口小部件布局中有一个textview,当用户点击textview时,将启动MainActivity。

答案 1 :(得分:0)

您必须将布局文件设置为appwidget-provider:

android:initialLayout="@layout/widget_view"

在此布局文件中,您必须根据需要放置按钮,图像,TextView等。