亲爱的高级程序员,
我遇到运行时错误,无法在我的databasehandler.java中使用它。是否有任何地方可以解决这个问题。
主要活动
public class DatabaseActivity extends Activity {
TextView idView;
EditText productBox;
EditText quantityBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database);
idView = (TextView) findViewById(R.id.productID);
productBox = (EditText) findViewById(R.id.productName);
quantityBox = (EditText) findViewById(R.id.productQuantity);
ListView listContent = (ListView) findViewById(R.id.listView1);
Cursor cursor = MyDBHandler.queueAll();
startManagingCursor(cursor);
String[] from = new String[]{MyDBHandler.COLUMN_PRODUCTNAME};
int[] to = new int[]{R.id.text1};
SimpleCursorAdapter cursorAdapter =
new SimpleCursorAdapter(this, R.layout.rolypoly, cursor, from, to);
listContent.setAdapter(cursorAdapter);
}
MyDBHandler.java
public static Cursor queueAll(){
String[] columns = new String[]{COLUMN_ID, COLUMN_PRODUCTNAME,COLUMN_QUANTITY};
SQLiteDatabase db = **this**.getReadableDatabase();
Cursor cursor = db.query(TABLE_PRODUCTS, columns,
null, null, null, null, null);
}
答案 0 :(得分:0)
是的,因为错误明确表示您无法在静态方法中使用this
。 this
指的是“当前正在调用”的对象,其中static不与任何对象绑定,您不能在静态上下文中使用this
。引用Oracle教程:
在实例方法或构造函数中,这是对当前对象的引用 - 正在调用其方法或构造函数的对象
而不是:
this.getReadableDatabase();
您可以这样做来访问getReadableDatabase();
:
new YourClassName().getReadableDatabase();