2013-04-09 1 views
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)); 

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

정적 인 '커서', 어머나, 무슨 예수님이 신? 오히려'Cursor'보다는 dbhelper (singleton 디자인 패턴)의 인스턴스를 얻기 위해 정적 메서드를 사용하는 것이 좋습니다. 이것은 올바른 응용 프로그램 논리가 아닌 것처럼 들립니다. – 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(); 
    
관련 문제