Domanda

Prima di tutto voglio descrivere la mia situazione brevemente.

Ho due classi, una MainClass e una classe DataBaseHelper, che si estende SQLiteOpenHelper.

Dal mio MainClass io chiamo un metodo nella classe DataBaseHelper di aprire una base di dati. Prima di aprire la base di dati che voglio per verificare la versione base di dati degli utenti (questo è importante, non appena voglio aggiornare la base di dati e spingerlo verso il mercato Android). Così dalla classe DataBaseHelper chiamo il metodo seguito, che si trova nel MainClass.

 public int checkCurrentDbVersion(){
        // Restore preferences
        SharedPreferences settings = getSharedPreferences(PREFERENCES, 0);
        int dbUpgradeVar = settings.getInt("dbUpgradeVar", 1);
        return dbUpgradeVar;        
    }

chiamo il metodo checkCurrentDbVersion () dalla classe DataBaseHelper in questo modo:

    MainClass currentDbVersion = new MainClass(); 

    int oldDbVersion = currentDbVersion.checkCurrentDbVersion();

Non appena il debugger esegue la seguente riga, non si ferma.

SharedPreferences settings = getSharedPreferences(PREFERENCES, 0);

Che cosa sto facendo di sbagliato? Non ho alcun costruttore definito. Che potrebbe essere il fallimento?

Con i migliori saluti Johe

È stato utile?

Soluzione

ho trovato una soluzione, che voglio condividere. Si può trovare qui:

Passando dati attraverso intenti invece di costruttori

ho dimenticato il contesto (io ancora non è sicuro al 100% quello che il contesto è tutto, ma comunque ...).

Quindi, per ottenere il codice di lavoro ho cambiato in questo modo:

 public int checkCurrentDbVersion(Context context){
        // Restore preferences
        SharedPreferences settings = context.getSharedPreferences(PREFERENCES, 0);
        int dbUpgradeVar = settings.getInt("dbUpgradeVar", 1);
        return dbUpgradeVar;        
    }

Chiamare il metodo

private final Context myContext;

/*
*do some other stuff here
*/

    MainClass currentDbVersion = new MainClass(); 

    int oldDbVersion = currentDbVersion.checkCurrentDbVersion(myContext);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top