title: Android widget not updating - has incorrect widget ID
body: <p>I've been working on a widget and making some advances (I hope) but still can't get it to do what I want.</p>
  
  <p>I have a configurator activity which works ok. When it closes I call the updateAppWidget method in the WordWidget class and the widget updates the random number.</p>
  
  <p>What I can't do it get the random number to change because of onClick. According to the log I do enter the onReceive() method, but thats about it.</p>
  
  <p>In the log I'm printing the widget ID. I noticed that when run from the configurator activity it's printing appWidgetId=33, but when I press the widget it prints appWidgetId=24.</p>
  
  <p>This is the code:</p>
  
  <pre><code>public class WordWidget extends AppWidgetProvider
  {
  
      @Override
      public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
      {
          //This is run when a new widget is added or when the update period expires.
          Log.v("wotd",  "In onUpdate(), updating " + appWidgetIds.length + " widgets");
          Log.v("wotd",  "   the array is " + appWidgetIds.toString());
  
          for(int x = 0; x &lt; appWidgetIds.length; x++)
          {
              Integer appWidgetId = appWidgetIds[x];
  
  
              //Method that updates the random value
              updateAppWidget(context, appWidgetManager, appWidgetId);
          }
      }
  
      @Override
      public void onReceive(Context context, Intent intent)
      {
          super.onReceive(context, intent);
          Log.v("wotd", "In onReceive() with intent=" + intent.toString());
          if (intent.getAction().equals("android.appwidget.action.APPWIDGET_UPDATE"))
          {
              Integer mAppWidgetId;
              AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
  
              Bundle extras = intent.getExtras();
              if(extras != null)
              {
                  Log.v("wotd", "In onReceive(), extras is valid");
                  mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
  
                  //If they gave us an intent without a valid widget Id, just bail.
                  if (mAppWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID)
                  {
                      Log.v("wotd", "In onReceive(), mAppWidgetId is ok");
                      updateAppWidget(context, appWidgetManager, mAppWidgetId);
                  }
              } else
              {
                  Log.v("wotd", "In onReceive(), extras is INVALID");
                  mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
              }
          }
  
  
      }
  
  
      static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, Integer appWidgetId)
      {
          Log.v("wotd", "In updateAppWidget() with appWidgetId=" + appWidgetId);
  
          //Setup onClick
          Intent widgetIntent = new Intent(context, WordWidget.class);
          widgetIntent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
          widgetIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
          PendingIntent widgetPendingIntent = PendingIntent.getBroadcast(context, 0, widgetIntent, 0);
  
          Integer nextNumb = new Random().nextInt(100);
          Log.v("wotd", "In updateAppWidget(), nextNumb = " + nextNumb.toString());
  
          RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widgetlayout);
          remoteView.setTextViewText(R.id.mainText, String.valueOf(nextNumb));
          remoteView.setOnClickPendingIntent(R.id.mainText, widgetPendingIntent);
  
          // Tell the widget manager
          appWidgetManager.updateAppWidget(appWidgetId, remoteView);
      }
  }
  </code></pre>
  
  <p>This is the log file, from when I touch the widget (note that the prefs activity also has a log printout and shows the widget ID as a different number that this):</p>
  
  <pre><code>05-14 17:15:47.453: V/wotd(1585): In onReceive() with intent=Intent { act=android.appwidget.action.APPWIDGET_UPDATE flg=0x10000000 cmp=com.rfxlabs.wordofthedaywidget/.WordWidget bnds=[202,177][222,201] (has extras) }
  05-14 17:15:47.453: V/wotd(1585): In onReceive(), extras is valid
  05-14 17:15:47.463: V/wotd(1585): In onReceive(), mAppWidgetId is ok
  05-14 17:15:47.463: V/wotd(1585): In updateAppWidget() with appWidgetId=24
  </code></pre>
  
  <p>05-14 17:15:47.463: V/wotd(1585): In updateAppWidget(), nextNumb = 42</p>
  
  <p>So as you can see, I'm actually entering my updateAppWidget method, but for some reason the appWidgetId is incorrect.</p>
  
  <p>Any ideas why this is happening? Thanks a lot!</p>