1 Cursor cursor = contentResolver.query(MY_URI, new String[] { "first" }, null, null, null);
2 if (cursor != null) {
3 if (cursor.moveToFirst()) {
4 first = cursor.getString(cursor.getColumnIndex("first"));
5 cursor.close();
6 }
7 }
Sau đó, trên đường # 3 (theo các bản ghi), tôi tất cả bây giờ và sau đó tôi đi qua ngoại lệ này (đoạn trích dưới đây):cửa sổ Cursor không thể được tạo ra từ chất kết dính
android.database.CursorWindowAllocationException: Cursor window could not be created from binder.
at android.database.CursorWindow.<init>(CursorWindow.java:134)
at android.database.CursorWindow.<init>(CursorWindow.java:41)
at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:709)
at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:707)
at android.database.CursorWindow.newFromParcel(CursorWindow.java:718)
at android.database.BulkCursorProxy.getWindow(BulkCursorNative.java:196)
..
Bất kỳ ý tưởng nào tại sao nó lại ném ngoại lệ này? Cảm ơn!
thử này [link] (http://stackoverflow.com/questions/5288384/android-content- resolver-query-return-0-rows-when-it-ought-not-too) –
Có bao nhiêu hàng trong cơ sở dữ liệu đang sao lưu 'ContentResolver'? Ngoại lệ đó được ném nếu con trỏ không phân bổ đủ không gian để lưu trữ dữ liệu cần thiết. Vì bạn không giới hạn số hàng trong truy vấn của mình thông qua lựa chọn args, nên 'con trỏ' của bạn sẽ phân bổ không gian để giữ một bản sao của tất cả các cột' đầu tiên' trong bộ nhớ. Nếu có một số lượng lớn các hàng, có khả năng quá trình này không thể cấp phát bộ nhớ đó. – iagreen
@iagreen, chỉ có một hàng đó là lý do tại sao tôi không thực hiện vòng lặp cho nó. – lorraine