2010-02-27 6 views
2

Сначала я хочу кратко описать свою ситуацию.Проблемы с вызовами getSharedPreferences(); из класса SQLiteOpenHelper

У меня есть два класса: один класс MainClass и один класс DataBaseHelper, который расширяет SQLiteOpenHelper.

Из моего MainClass Я вызываю метод в классе DataBaseHelper, чтобы открыть базу данных. Перед открытием базы данных я хочу проверить версию базы данных пользователей (это важно, как только я хочу обновить базу данных и вывести ее на рынок Android). Поэтому из класса DataBaseHelper я вызываю следующий метод, который находится в MainClass.

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

я вызываю метод checkCurrentDbVersion() из класса DataBaseHelper так:

MainClass currentDbVersion = new MainClass(); 

    int oldDbVersion = currentDbVersion.checkCurrentDbVersion(); 

Как только отладчик запускает следующую строку, она останавливается.

SharedPreferences settings = getSharedPreferences(PREFERENCES, 0); 

Что я делаю неправильно? У меня нет конструктора. Может быть, это провал?

С наилучшими пожеланиями Johe

ответ

7

Я нашел решение, которое я хочу поделиться. Его можно найти здесь:

Passing data through intents instead of constructors

Я забыл контекст (я до сих пор не 100% уверен, что контекст все о, но в любом случае ...).

Так, чтобы получить код работает я изменил его следующим образом:

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

Вызвать метод

private final Context myContext; 

/* 
*do some other stuff here 
*/ 

    MainClass currentDbVersion = new MainClass(); 

    int oldDbVersion = currentDbVersion.checkCurrentDbVersion(myContext); 
+0

Спасибо, действительно оценили ваш вопрос/ответ. Я вызывал свои «getSharedPreferences» изнутри действия, которое уже имело контекст, но мне пришлось добавить «это». к началу (смешно). – Slobaum

+0

рад, что я мог бы помочь. – j7nn7k