单击事件上的android小部件

时间:2011-03-18 04:12:37

标签: android android-widget

我在android中创建了widget,它成功运行,但现在我想在widget的click事件上使用,以便我可以从中打开新的活动。

帮帮我

3 个答案:

答案 0 :(得分:38)

 @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中,我有根元素LinearLayout,其id为widget_layout

<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 :(得分:10)

我用过这个:

// 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);

答案 2 :(得分:-3)

在您的布局中,为该特定小部件提供

android:onClick="your method name inside your activity"

并在您的活动中,提供:

public void methodname(View view) {
       //give your intent code here
}

注意:当你调用这样的方法时,你的方法应该是公共的,它应该有一个View对象作为参数。