如何在Android小部件中添加活动按钮

时间:2014-08-19 17:47:32

标签: android android-widget

这是我第一次需要为Android创建一个家庭小部件。

我需要在我的widget_layout中定义按钮以启动一些活动,所以我创建了一个扩展WidgetProvider的类AppWidgetProvider并在家中显示Widget,但我注意到了没有onCreate,所以我没有详细说明如何将我的布局xml中的按钮与可以打开所需活动的侦听器完全链接。

市场上有许多小部件都有这种按钮。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

在小部件中,您必须使用RemoteViews而不是View,并且没有findViewById(),因此没有setOnClickListener()。但是,您可以使用remoteViews.setOnClickPendingIntent(id, pendingIntent)。以下是使用此方法打开活动的最小方法:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    for (int i = 0; i < appWidgetIds.length; i++) {
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
        Intent appIntent = new Intent(context, MyActivity.class);
        appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        PendingIntent appPendingIntent = PendingIntent.getActivity(context, REQUEST_CODE, appIntent, PendingIntent.FLAG_CANCEL_CURRENT);
        views.setOnClickPendingIntent(R.id.widget_button, appPendingIntent);
        appWidgetManager.updateAppWidget(appWidgetIds[i], views);
    }
    super.onUpdate(context, appWidgetManager, appWidgetIds);
}