Dest420
Dest420

Reputation: 11

Cannot resolve symbol message for method from a class

I created following method in SQLiteOpenHelper subclass:

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

But when I try to use this method in MainActivity on button click like this:

else if(v==viewAll){
            SQLite sql = new SQLite(MainActivity.this);
            List<Data> all = new sql.getAll();
        }

"getAll" gets highlighted red and I get the following message when I hover over it: Cannot resolve symbol 'getAll'. Now I have tried Invalidating caches and restarting project but it didn't work, I have also tried Importing to a new project but that didn't work either.

Upvotes: 1

Views: 562

Answers (2)

Ralf Kleberhoff
Ralf Kleberhoff

Reputation: 7290

Creating a getAll() method in a SQLiteOpenHelper class doesn't help if you want to call getAll() on an instance of the SQLite class.

Calling getAll() on an instance of the SQLite class is only valid if SQLite or one of its superclasses contains such a method (and most probably, SQLiteOpenHelper is not a superclass of SQLite).

EDIT:

I overlooked the new keyword that @net00 spotted, and of course that makes the attempted call unintellegible to the compiler. new must be followed by a classname, not a method call.

Upvotes: 0

ErnestoC
ErnestoC

Reputation: 2904

What if you remove the new keyword when you call getAll()? You are not creating a new object there, your all list is just getting back the list your return from the method.

else if(v==viewAll){
            SQLite sql = new SQLite(MainActivity.this);
            List<Data> all = new sql.getAll(); //remove new here
        }

Upvotes: 1

Related Questions