无法对非静态方法错误进行静态引用

时间:2013-04-09 11:56:39

标签: android listview binding sqliteopenhelper

我从代码中收到以下错误

  

'无法对非静态方法进行静态引用   来自SQLiteOpenHelper'

类型的getReadableDatabase()
<{1>}文件中的

。如果我使用Eclipse来解决错误,那么Database.java文件中会发生错误。有谁知道如何解决它?

FavouritesScreen.java

FavouriteScreen.java

Database.java

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

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

3 个答案:

答案 0 :(得分:2)

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

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

  2. getReadableDatabase()静态。

  3. 使getReadableDatabase()非静态并改变您的调用方式:

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

答案 1 :(得分:0)

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

答案 2 :(得分: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;
}