ArrayList NullPointerException para guardar ORMLite

Tengo una categoría de clase

  @DatabaseTable(tableName = "categories")
public class Category {
    public final static String CATEGORY_TITLE_FIELD_NAME  = "title";
    @SerializedName("id")
    @DatabaseField(id = true)
    int id;
    @SerializedName("title")
    @DatabaseField(dataType = DataType.STRING, columnName = CATEGORY_TITLE_FIELD_NAME)
    String title;
    // need for ORMlite
    public Category()
    {}
    public Category (int id, String title)
    {
        this.id = id;
        this.title = title;
    }
    public int getCategoryId() 
    {

         return this.id;
    }

    public String getCategoryTitle() 
    {
         return this.title;
    }

    public void setCategoryId(int id)
    {
         this.id = id;
    }

    public void setCategoryTitle(String title)
    {
         this.title = title;
    }

    @Override
    public String toString()
    {       
    return "{title="+title +" "+"id="+id+"}";   
    }

}

Y le puse datos de JSON y quiero guardarlos en ORMLite. Así es como lo hago:

DatabaseHandler db = new DatabaseHandler(getApplicationContext());
JSONObject data = json.getJSONObject(KEY_DATA);
// getting categories
JSONArray categories = new JSONArray();
categories = data.getJSONArray(KEY_CATEGORIES);
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonArray array = parser.parse(categories.toString()).getAsJsonArray();
Type listType = new TypeToken<List<Category>>() {}.getType();
List<Category> tasks = new ArrayList<Category>();
tasks = gson.fromJson(array.toString(), listType);
RuntimeExceptionDao<Category, Integer> simpleDao = getHelper1().getSimpleCategoryDao();
Dao<Category, Integer> categoryDao = getHelper1().getCategoryDao();
saveContacts(tasks);
List<Category> list = categoryDao.queryForAll();
Log.i("categoryDAO",list.toString());

Y este es el método saveContacts() para guardar datos:

 public void saveContacts(List<Category> contacts) throws SQLException
    {
        OrmLiteSqliteOpenHelper dbHelper= DatabaseHandler.getInstance(_context);
        Dao<Category, Integer> daoContact=dbHelper.getDao(Category.class);
        for (Category contact : contacts) {
            daoContact.create(contact);
        }
        dbHelper.close();
    }

Pero tengo una excepción como:

 FATAL EXCEPTION: main
java.lang.NullPointerException
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
at com.j256.ormlite.android.AndroidConnectionSource.getReadWriteConnection(AndroidConnectionSource.java:63)
    at com.j256.ormlite.dao.BaseDaoImpl.create(BaseDaoImpl.java:304)
    at com.assignmentexpert.LoginActivity.saveContacts(LoginActivity.java:192)
    at com.assignmentexpert.LoginActivity$1.onClick(LoginActivity.java:108)
    at android.view.View.performClick(View.java:2485)
    at android.view.View$PerformClick.run(View.java:9080)
    at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:3687)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)

Por favor, dime ¿qué estoy haciendo mal?

preguntado el 31 de julio de 12 a las 15:07

Publicar su programa completo nuevamente para depurar su próximo problema es solo perder el tiempo de las comunidades. -

Siento esto. Pero probé diferentes formas de resolverlo y necesito una pequeña pista. Puse mi json analizando y guardándolo en ORMLite en la clase separada. Llame a este método en el método onCreate(...) de la clase DatabaseHandler. Pero sigo recibiendo una excepción arriba... Agradezco su ayuda... -

1 Respuestas

Problema resuelto al pasar el contexto a mi DatabaseHandler que se extiende desde OrmLiteSqliteOpenHelper.

Respondido 14 ago 12, 09:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.