SimpleCursor适配器 - 无法在静态上下文中使用它

时间:2014-02-13 16:58:53

标签: java android static-methods simplecursoradapter

亲爱的高级程序员,

我遇到运行时错误,无法在我的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);
}

1 个答案:

答案 0 :(得分:0)

是的,因为错误明确表示您无法在静态方法中使用thisthis指的是“当前正在调用”的对象,其中static不与任何对象绑定,您不能在静态上下文中使用this。引用Oracle教程:

  

在实例方法或构造函数中,这是对当前对象的引用 - 正在调用其方法或构造函数的对象

而不是:

this.getReadableDatabase();

您可以这样做来访问getReadableDatabase();

new YourClassName().getReadableDatabase();