title: Android Widget: Defining a simple boolean variable for a toggle widget
body: <p>I'm trying to make a very simple toggle switch and I want to store the state of the switch in order to change between states.  My current solution is to use a class boolean variable, but the variable does not seem to change.</p>
  
  <p>Source code below.  As you can see, it's very simple so far and the touch events are working (that is, the Log statement is initiating every time).  When the widget is first placed on the screen, it has the text "Hello!".  Once pressed for the first time, this changes to "Ontrue", so clearly isEnabled is being set to true.  However, on subsequent presses, Log is showing that isEnabled is false and it continues to execute through the else statement and not the if.</p>
  
  <p>Any help would be appreciated!</p>
  
  <pre><code>package com.mywidget.widget;
  
  import android.app.PendingIntent;
  import android.appwidget.AppWidgetManager;
  import android.appwidget.AppWidgetProvider;
  import android.content.ComponentName;
  import android.content.Context;
  import android.content.Intent;
  import android.util.Log;
  import android.widget.RemoteViews;
  
  public class MyWidget extends AppWidgetProvider {
      public static final String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";
      private RemoteViews remoteViews = new RemoteViews("com.mywidget.widget", R.layout.widget1x1);
      private boolean isEnabled;
  
      /** Called when the activity is first created. */
      @Override
      public void onUpdate(Context context, AppWidgetManager appWidgetManager,
              int[] appWidgetIds) {
          final int N = appWidgetIds.length;
  
          for (int i = 0; i &lt; N; i++) {
              int appWidgetId = appWidgetIds[i];
  
              Intent intent = new Intent(context, MyWidget.class);
              intent.setAction(ACTION_WIDGET_RECEIVER);
              PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
                      intent, 0);
  
              remoteViews.setOnClickPendingIntent(R.id.BTNwidget, pendingIntent);
  
              appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
          }
      }
  
      @Override
      public void onReceive(Context context, Intent intent) {
          if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
              Log.i("MyWidget", "Screen pressed! Value is: " + isEnabled);
              if (isEnabled) {
                  // set to off
                  Log.i("MyWidget", "Setting to off");
  
                  // Code to change state
                  isEnabled = false;
  
                  // Update the widget to reflect our changes
                  remoteViews.setTextViewText(R.id.BTNwidget, "OFF" + isEnabled);
                  ComponentName cn = new ComponentName(context, HapticWidget.class);
                  AppWidgetManager.getInstance(context).updateAppWidget(cn, remoteViews);
              } else {
                  // set to on
                  Log.i("MyWidget", "Setting to on");
  
                  // Code to change state
                  isEnabled = true;
  
                  // Update the widget to reflect our changes
                  remoteViews.setTextViewText(R.id.BTNwidget, "ON" + isEnabled);
                  ComponentName cn = new ComponentName(context, HapticWidget.class);
                  AppWidgetManager.getInstance(context).updateAppWidget(cn, remoteViews);
              }
          }
          super.onReceive(context, intent);
      }
  }
  </code></pre>