Android小部件的点击事件

28

我已经在Android中创建了小部件并成功运行,但是现在我想使用小部件的单击事件,以便我可以从中打开新活动。

请帮忙。


1
当您发现任何答案是正确的时候,请接受它并打上勾。 - Anju
1
请参考以下链接:https://dev59.com/CXE85IYBdhLWcg3wgDpI - Jared Burrows
请查看此链接 https://dev59.com/eGAg5IYBdhLWcg3wwdPA#23221007 - Mori
2个回答

43
 @Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                     int[] appWidgetIds) {
    for (int i = 0; i < appWidgetIds.length; i++) {
        int appWidgetId = appWidgetIds[i];

        Intent intent = new Intent(context, TaskManagerActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
        views.setOnClickPendingIntent(R.id.widget_layout, pendingIntent);
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
}

在widget.xml中,我有一个id为widget_layout的LinearLayout根元素。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/widget_layout"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:paddingTop="10dip"
          android:paddingLeft="10dip"
          android:orientation="vertical">

1
嗨@xtem,我在检测widget id方面遇到了问题。我在我的主屏幕上创建了3个小部件,并希望单独更改每个小部件的主题。因此,当我点击小部件时,我的Configuration类被打开,并且每个小部件都会更新onUpdate()。我能分别做到这一点吗? - Rahul Upadhyay
使用 0 作为 requestCode 可能会让你陷入麻烦:https://dev59.com/k1rUa4cB1Zd3GeqPl6MX#16800592 - David Riha

9
我使用了这个:

// Create an Intent to launch ExampleActivity
        Intent intent = new Intent(context, Mainpage.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
        remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent);

16
是的,但是当小部件被点击时会调用哪个方法? - KalEl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接