-1

tengo esta tabla en SQLite:

public static final String TABLA_PARA_SEGUIR =
        "CREATE TABLE " + TABLA_SEGUIR + "(" +
                ID_ELEMENTO + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                NOMBRE_MANGA + " TEXT NOT NULL, " +
                URL_MANGA + " TEXT NOT NULL, " +
                URL_IMAGEN + " TEXT NOT NULL, " +
                CONTADOR_CAPITULOS + " TEXT NOT NULL, " +
                BIT_SEGUIR_NO + " INTEGER);";

A la cual quiero hacerle un Update:

public void actualizar(SeguirManga sm) {
    this.openWriteableDB();
    String where = PaginasTabla.ID_ELEMENTO + " = ?";
    db.update(PaginasTabla.TABLA_SEGUIR, mapaSiguiendo(sm), where, new String[]{String.valueOf(sm.getId())});
    db.close();
}

El mapeo que uso es el siguiente:

private ContentValues mapaSiguiendo(SeguirManga sm){
    ContentValues cv = new ContentValues();
    cv.put(PaginasTabla.NOMBRE_MANGA, sm.getNombre());
    cv.put(PaginasTabla.URL_MANGA, sm.getUrl());
    cv.put(PaginasTabla.URL_IMAGEN, sm.getUrlImagen());
    cv.put(PaginasTabla.CONTADOR_CAPITULOS, sm.getContador());
    cv.put(PaginasTabla.BIT_SEGUIR_NO, sm.getValorSeguir());
    return cv;
}

Creo la variable seguirManga:

private SeguirManga seguirManga;

Luego, creo un método para actualizar el valor:

private void dejarMetodoDaato(){
    PaginasSQL paginasSQL = new PaginasSQL(TMOnlineMangaSeleccion.this);
    int valor = 2;
    seguirManga.setValorSeguir(0);
    paginasSQL.actualizar(seguirManga);
}

Y lo ejecuto en el botón pertinente:

    dejarDato.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dejarMetodoDaato();
        }
    });

El problema con esto es que al presionar el botón sucede lo siguiente:

    java.lang.NullPointerException: Attempt to invoke virtual method 'void com.dafran.booksearch.Clases.SeguirManga.setValorSeguir(int)' on a null object reference
    at com.dafran.booksearch.Activities.TMO.TMOnlineMangaSeleccion.dejarMetodoDaato(TMOnlineMangaSeleccion.java:125)
    at com.dafran.booksearch.Activities.TMO.TMOnlineMangaSeleccion.access$100(TMOnlineMangaSeleccion.java:35)
    at com.dafran.booksearch.Activities.TMO.TMOnlineMangaSeleccion$2.onClick(TMOnlineMangaSeleccion.java:87)

introducir la descripción de la imagen aquí

La línea que marca es esta:

seguirManga.setValorSeguir(0);

¿En dónde me estoy equivocando?

Franqo Balsamo
  • 937
  • 1
  • 11
  • 34

1 Answers1

0

Técnicamente, en esta parte no estás creando nada, simplemente declaras una variable, pero sin valor alguno, cosa que Java lo declara como null; y al hacer un null.setPropiedad(0); en realidad estás provocando un NullPointerException.

private SeguirManga seguirManga; // Como no hay ningún new SeguirManga(), se instancia como nulo

La solución es que, en esa misma línea, crees una instanciación del objeto.

private SeguirManga seguirManga = new SeguirManga();  // Suponiendo que tu clase SeguirManga 
// tenga un constructor vacío. Si no, debes crearlo