Android Spinner - Невозможно сделать статическую ссылку на справку по нестатическому методу - PullRequest
0 голосов
/ 11 марта 2011

Я следовал руководству по заполнению данных из базы данных sqlite в спиннер (выпадающий список) в Android.Однако я получаю сообщение об ошибке:

Cannot make a static reference to the non-static method fetchAllCategories() from the type DatabaseAdapter

Мой код выглядит следующим образом:

В EditTask:

private void fillData() {
        Cursor categoriesCursor;
        Spinner categoriesSpinner = (Spinner) findViewById(R.id.spinDept);
        categoriesCursor = DatabaseAdapter.fetchAllCategories();

        startManagingCursor(categoriesCursor);

        String[] from = new String[] { DatabaseAdapter.CAT_NAME };

        int[] to = new int[] { R.id.tvDBViewRow }; //this part hasnt been implemented in to the layout yet

        SimpleCursorAdapter categoriesAdapter = new SimpleCursorAdapter(this,
                R.layout.db_view_row, categoriesCursor, from, to);

        categoriesSpinner.setAdapter(categoriesAdapter);
    }

И в моем классе DatabaseAdapter у меня есть следующее:

public Cursor fetchAllCategories() {
    if (mDb == null) {
        this.open();
    }
    String tableName = "CAT_TABLE";
    return mDb.query(tableName, new String[] { CAT_ID, CAT_NAME }, null,
            null, null, null, null);
}

Обидная строка кода:

categoriesCursor = DatabaseAdapter.fetchAllCategories();

Я довольно новичок в Java / Android, поэтому это может быть что-то простое / очевидное, но любая помощь очень ценится!

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Вы должны сначала создать экземпляр объекта DatabaseAdapter.например:

DatabaseAdapter myDbAdapter = new DatabaseAdapter();
categoriesCursor = myDbAdapter.fetchAllCategories();
0 голосов
/ 11 марта 2011

, чтобы ваш код работал, вам нужно объявить метод fetchAllCategoires () как статический следующим образом:

public static Cursor fetchAllCategories() 

Поскольку вы не создали экземпляр объекта DatabaseAdapter, вы не можете просто вызвать один изэто методы по ссылке на имя класса, если в объявлении метода не указано ключевое слово static.

...