title: Android sqlite exception. Unable to instantiate activity
body: <p>When I run an activity in my Android app with instantiating dbs classes as follows: </p>
  
  <pre><code>private final DbOpenHelper dbOpen = new DbOpenHelper(MainMonitor.this);
  private final SQLiteDatabase db = dbOpen.getWritableDatabase();
  private final ContentValues cv = new ContentValues();   
  </code></pre>
  
  <p>it falls with exception: </p>
  
  <pre><code>    07-10 15:33:31.581: E/AndroidRuntime(1142): FATAL EXCEPTION: main
  07-10 15:33:31.581: E/AndroidRuntime(1142): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.android.analizer/com.android.analyzer.MainMonitor}: java.lang.NullPointerException
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1879)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at android.app.ActivityThread.access$600(ActivityThread.java:122)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at android.os.Handler.dispatchMessage(Handler.java:99)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at android.os.Looper.loop(Looper.java:137)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at android.app.ActivityThread.main(ActivityThread.java:4340)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at java.lang.reflect.Method.invokeNative(Native Method)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at java.lang.reflect.Method.invoke(Method.java:511)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at dalvik.system.NativeStart.main(Native Method)
  07-10 15:33:31.581: E/AndroidRuntime(1142): Caused by: java.lang.NullPointerException
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at com.android.analyzer.MainMonitor.&lt;init&gt;(MainMonitor.java:40)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at java.lang.Class.newInstanceImpl(Native Method)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at java.lang.Class.newInstance(Class.java:1319)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1870)
  07-10 15:33:31.581: E/AndroidRuntime(1142):     ... 11 more
  </code></pre>
  
  <p>DbOpenHelper looks like this: </p>
  
  <pre><code>import android.content.Context;
  import android.database.sqlite.SQLiteDatabase;
  import android.database.sqlite.SQLiteDatabase.CursorFactory;
  import android.database.sqlite.SQLiteOpenHelper;
  
  public class DbOpenHelper extends SQLiteOpenHelper {
  
      private static final String DB_NAME = "analyzer";
      private static final int DB_VERSION = 1;
  
      public static final String TABLE_NAME = "network";
      public static final String ACTIVITY = "activity";
  
      public static final String CREATE_TABLE_NETWORK = "CREATE TABLE "+TABLE_NAME+"(" +
              "_id integer primary key autoincrement, activity integer default 1)"; 
  
  //  DbOpenHelper openHelper = null;
  
      public DbOpenHelper(Context context) {
          super(context, DB_NAME, null, DB_VERSION);
  //      openHelper = new DbOpenHelper(context);
  
      }
  
      public void onCreate(SQLiteDatabase sqliteDb) {
          sqliteDb.execSQL(CREATE_TABLE_NETWORK);
          sqliteDb.execSQL("INSERT INTO network(activity) VALUES(1)");
      }
  
      public void onUpgrade(SQLiteDatabase sqliteDb, int i, int i2) {
  
      }
  
  //  @Override
  //  public void close() {
  //      if (openHelper!=null) openHelper.close();       
  //  }
  
  }
  </code></pre>
  
  <p>The problem solved, but the next problem appeared. I've put the insert method in the DbOpenHelper class like this:</p>
  
  <pre><code>    public void onCreate(SQLiteDatabase sqliteDb) {
          sqliteDb.execSQL(CREATE_TABLE_NETWORK);
  //      sqliteDb.execSQL("INSERT INTO network(activity) VALUES(1)");
          ContentValues cv = new ContentValues();
          cv.put(ACTIVITY_FIELD, 1);
          sqliteDb.insert(DbOpenHelper.TABLE_NAME, null, cv);
      }
  </code></pre>
  
  <p>And in Activity I'm trying to update table this way:</p>
  
  <pre><code>                    cv.put(DbOpenHelper.ACTIVITY_FIELD, 0);
  //                  db.insert(DbOpenHelper.TABLE_NAME, null, cv);
                      db.update(DbOpenHelper.TABLE_NAME, cv, null, null);
  
  An Exception is:
  07-11 15:02:47.341: E/AndroidRuntime(933): FATAL EXCEPTION: main
  07-11 15:02:47.341: E/AndroidRuntime(933): java.lang.NullPointerException
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.database.sqlite.SQLiteStatement.releaseAndUnlock(SQLiteStatement.java:290)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:96)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1810)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1761)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at com.android.analyzer.MainMonitor$2.onCheckedChanged(MainMonitor.java:99)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.widget.CompoundButton.setChecked(CompoundButton.java:125)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.widget.Switch.setChecked(Switch.java:517)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.widget.Switch.animateThumbToCheckedState(Switch.java:508)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.widget.Switch.stopDrag(Switch.java:498)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.widget.Switch.onTouchEvent(Switch.java:458)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.View.dispatchTouchEvent(View.java:5486)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1892)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1371)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.app.Activity.dispatchTouchEvent(Activity.java:2364)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1840)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.View.dispatchPointerEvent(View.java:5662)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2863)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.os.Handler.dispatchMessage(Handler.java:99)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.os.Looper.loop(Looper.java:137)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at android.app.ActivityThread.main(ActivityThread.java:4340)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at java.lang.reflect.Method.invokeNative(Native Method)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at java.lang.reflect.Method.invoke(Method.java:511)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
  07-11 15:02:47.341: E/AndroidRuntime(933):  at dalvik.system.NativeStart.main(Native Method)
  </code></pre>
  
  <p>I found this line helpfull -    </p>
  
  <pre><code>at com.android.analyzer.MainMonitor$2.onCheckedChanged(MainMonitor.java:99)
  </code></pre>
  
  <p>and it seems like no table or/and row was created in dbs, that's why it couldn't update itself. What is the problem with this awefully drag-like sqlite? =)</p>