Android 不能';t从游标窗口读取第0行第0列。在从光标访问数据之前,请确保光标已正确初始化
我尝试在Android上学习SQLite。这是我的第一个SQL应用程序。所以我找不到这些错误的原因 这是Android 不能';t从游标窗口读取第0行第0列。在从光标访问数据之前,请确保光标已正确初始化,android,sql,sqlite,Android,Sql,Sqlite,我尝试在Android上学习SQLite。这是我的第一个SQL应用程序。所以我找不到这些错误的原因 这是MainActivity.java: public class MainActivity extends AppCompatActivity { ListView listView; final ArrayList<String> artNameList =new ArrayList<String>(); static ArrayList<
MainActivity.java:
public class MainActivity extends AppCompatActivity {
ListView listView;
final ArrayList<String> artNameList =new ArrayList<String>();
static ArrayList<Bitmap> artImageList = new ArrayList<Bitmap>();
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater =getMenuInflater();
menuInflater.inflate(R.menu.add_art,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId()==R.id.add_art){
Intent intent = new Intent(getApplicationContext(),Main2Activity.class);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(ListView)findViewById(R.id.listView);
ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,artNameList);
listView.setAdapter(arrayAdapter);
String Url ="content://com.example.duygu.newartbook.ArtContentProvider";
Uri artUri =Uri.parse(Url);
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(artUri,null,null,null,"name");
if(cursor !=null ){
while (cursor.moveToNext()){
artNameList.add(cursor.getString(cursor.getColumnIndex(ArtContentProvider.NAME)));
byte[] bytes = cursor.getBlob(cursor.getColumnIndex(ArtContentProvider.IMAGE));
Bitmap image = BitmapFactory.decodeByteArray(bytes,0,bytes.length);
artImageList.add(image);
arrayAdapter.notifyDataSetChanged();
}
}
}
}
这是我的错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.duygu.newartbook, PID: 26354
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.duygu.newartbook/com.example.duygu.newartbook.MainActivity}: java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at android.app.ActivityThread.access$900(ActivityThread.java:157)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5525)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Caused by: java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetString(Native Method)
at android.database.CursorWindow.getString(CursorWindow.java:438)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
at android.database.CursorWrapper.getString(CursorWrapper.java:137)
at com.example.duygu.newartbook.MainActivity.onCreate(MainActivity.java:61)
at android.app.Activity.performCreate(Activity.java:6272)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
我看到您正在SQLite数据库中存储图像。这通常不是一个好主意,正如我将要链接到的副本所解释的那样<代码>游标只能存储有限数量的数据。可能的重复项还缺少一个
游标。moveToFirst()
,这通常是一个很好的做法。但是我无法打开应用程序。我有一个运行时错误。如果删除此字符串,我可以打开应用程序,但没有意义。字符串Url=”content://com.example.duygu.newartbook.ArtContentProvider";否,它与您试图使用getBlob()
检索的byte[]
数组相关。如果您将查询限制为仅使用ArtContentProvider.NAME
列,它是否仍会崩溃?
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.duygu.newartbook, PID: 26354
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.duygu.newartbook/com.example.duygu.newartbook.MainActivity}: java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at android.app.ActivityThread.access$900(ActivityThread.java:157)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5525)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Caused by: java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetString(Native Method)
at android.database.CursorWindow.getString(CursorWindow.java:438)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
at android.database.CursorWrapper.getString(CursorWrapper.java:137)
at com.example.duygu.newartbook.MainActivity.onCreate(MainActivity.java:61)
at android.app.Activity.performCreate(Activity.java:6272)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)