Android微调器 - 无法对非静态方法帮助进行静态引用

时间:2011-03-10 21:29:10

标签: android sqlite spinner

我已经按照教程将数据从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 个答案:

答案 0 :(得分:1)

您必须首先实例化DatabaseAdapter对象。 例如:

DatabaseAdapter myDbAdapter = new DatabaseAdapter();
categoriesCursor = myDbAdapter.fetchAllCategories();

答案 1 :(得分:0)

为了使你的代码能够工作,你需要将方法fetchAllCategoires()声明为静态,如下所示:

public static Cursor fetchAllCategories() 

因为您没有实例化DatabaseAdapter对象,所以除非在方法声明中出现关键字static,否则不能通过类名引用调用其中一个方法。