1

我从我的代码中收到以下错误

'不能对 SQLiteOpenHelper 类型的非静态方法 getReadableDatabase() 进行静态引用'

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));

数据库.java

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

3 回答 3

2

错误是您正在做不允许的事情!解决方案:

  1. 将所有代码getReadableDatabase()放在函数中,确保不要调用非静态函数。

  2. getReadableDatabase()静态的。

  3. 使getReadableDatabase()非静态并更改您的称呼方式:

    Database database = new Database();
    Cursor listCursor = database.GetFavouritesList();
    
于 2013-04-09T12:01:52.087 回答
0

问题是,您试图在静态方法中使用非静态方法。getReadableDatabase()也应该是静态的,因为这应该有效。

于 2013-04-09T12:01:31.623 回答
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;
}
于 2013-04-09T12:02:16.330 回答