android widget桌面程序,布局里有一个button。我想让点击button响应onclick,网上代码总是启动一个activity:
Intent intent = new Intent(MyNoteConf.this, MyNoteEdit.class);
         
         intent.setAction(mPerfName + mAppWidgetId);
          
       intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,mAppWidgetId);
PendingIntent pendingIntent = PendingIntent.getActivity(MyNoteConf.this, 0,
intent, 0);
       views.setOnClickPendingIntent(R.id.my_widget_img, pendingIntent);
我自己想响应click事件,就和普通的button一样,有个onclick,想在里边写代码。

解决方案 »

  1.   

    LZ可以把PendingIntent的getActivity方法改成getBroadcast方法,在点击按钮的时候发送广播,然后在onReceive方法里去对这个广播消息进行处理,也就是LZ要写在onclick里的处理行为。给LZ个参考哈~
    @Override
    public void onReceive(Context context, Intent intent)
    {
    if (intent.getAction().equals(broadCastString))
    {
    RemoteViews remoteViews  = new RemoteViews(context.getPackageName(),R.layout.appwidgetlayout);
    remoteViews.setTextViewText(R.id.btnSend, "hihi");

    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);

    ComponentName componentName = new ComponentName(context,AppWidget.class);
    appWidgetManager.updateAppWidget(componentName, remoteViews);
    }
    super.onReceive(context, intent);
    Log.i("TAG","onReceive");
    } @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
    {
    Intent intent = new Intent();
    intent.setAction(broadCastString);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
    RemoteViews remoteViews  = new RemoteViews(context.getPackageName(),R.layout.appwidgetlayout);

    remoteViews.setOnClickPendingIntent(R.id.btnSend, pendingIntent);

    appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
    Log.i("TAG","onUpdate");
    }
    上面的代码希望对LZ有些帮助哟~