Error: Make sure the Cursor is initialized correctly before accessing data from it?
android, java, sql, sqlite
Solution
The column index of a cursor is zero-based, so change:
cursorState = c.getString(1);
cursorCapital = c.getString(2);
to
cursorState = c.getString(0);
cursorCapital = c.getString(1);
Problem
I have cursor initialized as follows: ``` @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //...Code, code, code... c = db.query("US_States", null, null, null, null, null, null, null); } ``` The cursor itself is used in a separate method within the same activity: ``` public void GameStart() { int gameCount = 0; while(gameCount < 5) { cursorEntry = new Random().nextInt(c.getCount()); c.moveToPosition(cursorEntry); cursorState = c.getString(1); cursorCapital = c.getString(2); displayText.setText(cursorState); ``` It gives me the following error: ``` E/CursorWindow﹕ Failed to read row 20, column 2 from a CursorWindow which has 50 rows, 2 columns. ``` With a stack trace pointing at this line `cursorCapital = c.getString(2);` every time I rerun the application. It always gives an error there. The database something like this: ``` State|Capital Alabama|Montgomery Alaska|Juneau Arizona|Phoenix ...The rest of the states ``` I read a couple of similar posts on SO, but they didn't give me an idea of what is going wrong. Any input is appreciated.