アンドロイド2.1で正常に動作するアプリケーションがありますが、3.0に移行しようとするとカーソルエラーが発生します。Android 3.0カーソルの行から行番号、列番号を読み取ることができません
Java.lang.IllegalStateException:は、列-1 カーソル・ウィンドウからのROW0を読み取れませんでした。 からデータにアクセスする前に、カーソルが正しく初期化されていることを確認してください。
すべてのデータはSQLiteデータベースに格納されており、このコードはAndroid 2.1で正常に動作します。アンドロイド3.0ではカーソルを別々に初期化する必要がありますか?
以下は私のコードです。
private void OpenGroupData(){
SQLiteDatabase db = openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null);
Cursor cur = db.rawQuery("SELECT groupid FROM properties GROUP BY GroupID" + ";" , null);
LinearLayout glayout = (LinearLayout) findViewById(R.id.Grouplayout);
LinearLayout gwindow = (LinearLayout) findViewById(R.id.groupwindow);
TextView data = new TextView(this);
glayout.addView(data);
data.setText("");
int ID = cur.getColumnIndex("groupid");
int idvalue;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
try{
// Check if our result was valid.
cur.moveToFirst();
if (cur != null) {
// Loop through all Results
do {data = new TextView(this);
data.setTextSize(20);
data.setClickable(true);
data.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
GroupClick(v);
}
});
glayout.addView(data);
idvalue = cur.getInt(ID);
data.setId(idvalue);
data.setText("Group: " + idvalue);
}while(cur.moveToNext());
}
cur.close();
db.close();
} catch(Exception e) {
Toast.makeText(getApplicationContext(), "Open Group Exception: " + e.toString(), Toast.LENGTH_SHORT).show();
}
}
私はまったく同じ問題を抱えていましたが、これが修正されました - ありがとう! +1 – Matt