我在 SQLiteOpenHelper 子類中創建了以下方法:
public List<Data> getAll(){
List<Data> returnList = new ArrayList<>();
String queryString = "SELECT * FROM " table;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(queryString, null);
if(cursor.moveToFirst()){
do {
int ID = cursor.getInt(0);
int soundamp = cursor.getInt(1);
String date = cursor.getString(2);
String time = cursor.getString(3);
double lat = cursor.getDouble(4);
double lon = cursor.getDouble(5);
Data newData = new Data(ID, soundamp, date, time, lat, lon);
returnList.add(newData);
}while(cursor.moveToNext());
}
cursor.close();
db.close();
return returnList;
}
但是,當我嘗試在 MainActivity 中使用此方法時,單擊按鈕如下所示:
else if(v==viewAll){
SQLite sql = new SQLite(MainActivity.this);
List<Data> all = new sql.getAll();
}
“getAll”以紅色突出顯示,當我將滑鼠懸停在它上面時,我收到以下訊息:無法決議符號“getAll”。現在我嘗試過使快取無效并重新啟動專案,但沒有成功,我也嘗試過匯入新專案,但也沒有用。
uj5u.com熱心網友回復:
如果您new在呼叫時洗掉關鍵字怎么getAll()辦?您并沒有在那里創建一個新物件,您的all串列只是從該方法中獲取您回傳的串列。
else if(v==viewAll){
SQLite sql = new SQLite(MainActivity.this);
List<Data> all = new sql.getAll(); //remove new here
}
uj5u.com熱心網友回復:
如果您想呼叫類的實體,則在類中創建getAll()方法SQLiteOpenHelper無濟于事。getAll()SQLite
僅當其超類或其超類之一包含此類方法(并且很可能不是 的超類)時,呼叫該類getAll()的實體SQLite才有效。SQLiteSQLiteOpenHelperSQLite
編輯:
我忽略了new@net00 發現的關鍵字,這當然使編譯器無法理解嘗試的呼叫。new后面必須跟一個類名,而不是方法呼叫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/423132.html
標籤:
