android appWidgetProvider 接收到android.appwidget.action.APPWIDGET_UPDATE后为什么没有执行onUpdate方法啊  来个大牛帮我解答啊 感激不尽

解决方案 »

  1.   

    贴上代码:
    监听器:button.setOnClickListener(mBtnClick);
    }
    OnClickListener mBtnClick = new OnClickListener(){ @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    Intent intent = new Intent();
    intent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
    Edit.this.sendBroadcast(intent);
    finish();
    }
    };注册receiver:
    <receiver android:icon="@drawable/icon"
                  android:label="@string/app_name"
                  android:name="WidgetProvider">
          <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
          </intent-filter>
          <meta-data android:name="android.appwidget.provider"
                     android:resource="@xml/widget_provider" />
        </receiver>
    复写的onreceive和onupdate
    public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
      System.out.println("onreceive");
    super.onReceive(context, intent);
    }  @Override
      public void onUpdate(Context ctxt, AppWidgetManager appWidgetManager,
                            int[] appWidgetIds) {
      
      System.out.println("onupdate");
              super.onUpdate(ctxt, appWidgetManager, appWidgetIds);
        
      }能打印出onreceive但是不能打印onupdate,这是为什么啊
      

  2.   

    csdn都是一群SX吗 真是想骂娘啊
      

  3.   

    AppWidgetProvider已经实现了onReceive,那里边调用onUpdate。onReceive,你已经复写了,当然不可能再调onUpdate。
    好好看看源码。
      

  4.   

    你没有发送AppWidgetManager.EXTRA_APPWIDGET_IDS。
    源码如下。
            if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) {
                Bundle extras = intent.getExtras();
                if (extras != null) {
                    int[] appWidgetIds = extras.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);
                    if (appWidgetIds != null && appWidgetIds.length > 0) {
                        this.onUpdate(context, AppWidgetManager.getInstance(context), appWidgetIds);
                    }   
                }   
            }