我已经按照教程将数据从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很陌生,所以它可能是简单/明显的东西,但是非常感谢任何帮助!
答案 0 :(得分:1)
您必须首先实例化DatabaseAdapter对象。 例如:
DatabaseAdapter myDbAdapter = new DatabaseAdapter();
categoriesCursor = myDbAdapter.fetchAllCategories();
答案 1 :(得分:0)
为了使你的代码能够工作,你需要将方法fetchAllCategoires()声明为静态,如下所示:
public static Cursor fetchAllCategories()
因为您没有实例化DatabaseAdapter对象,所以除非在方法声明中出现关键字static,否则不能通过类名引用调用其中一个方法。