2013-04-09 1 views
1

Я получаю следующее сообщение об ошибке из моего кодаНе удается сделать статическую ссылку на нестатическую ошибку метода

«Невозможно создать статическую ссылку на нестатической метод getReadableDatabase() от типа SQLiteOpenHelper '

в файле Database.java. Если я использую Eclipse для решения этой ошибки, ошибка возникает в файле FavouriteScreen.java. Кто-нибудь знает, как его решить?

FavouritesScreen.java

// Get a Cursor for the list items 
Cursor listCursor = Database.GetFavouritesList(); 
startManagingCursor(listCursor); 

// set the custom list adapter 
setListAdapter(new MyListAdapter(this, listCursor)); 

и

Database.java

public static Cursor GetFavouritesList(){ 
try 
{ 
return(getReadableDatabase().rawQuery("SELECT SocietyName FROM Favourites",null)); 
} 
catch(SQLiteException e) 
{ 
Log.e("Favourites", e.toString()); 
} 
return null; 
} 
+0

статический 'Курсор', мм, для чего бог Иисуса? Я предлагаю вам использовать статический метод для получения экземпляра dbhelper (singleton design pattern), чем 'Cursor'. Это звучит как неправильная назначенная логика приложения. – Sajmon

ответ

0

getReadableDatabase() является экземпляром метода, а не класса метода. Вам нужен экземпляр, например:

public static Cursor GetFavouritesList(SQLiteOpenHelper helper){ 
try 
{ 
return(helper.getReadableDatabase().rawQuery("SELECT SocietyName FROM Favourites",null)); 
} 
catch(SQLiteException e) 
{ 
Log.e("Favourites", e.toString()); 
} 
return null; 
} 
0

Проблема заключается в том, что вы пытаетесь использовать не- статический метод в вашем статическом методе. getReadableDatabase() также должен быть статическим, так как это должно работать.

2

Ошибка в том, что вы делаете что-то недопустимое! Решения:

  1. Поместите весь код для getReadableDatabase() в функции будучи уверенным, что не называть не-статические функции.

  2. getReadableDatabase() статические.

  3. Сделать getReadableDatabase() нестатических и изменить то, как вы это называете:

    Database database = new Database(); 
    Cursor listCursor = database.GetFavouritesList();