0

データベースから名前と番号を取得して表示するコードに取り組んでいます。このコードは、1.6 を実行しているエミュレーターでは機能しますが、4.1.1 を実行している Galaxy Nexus では機能しません。

デバイスで viewEntries() を呼び出すたびに、アプリが強制終了し、列が見つからないという IllegalStateException が発生します。WhitelistDB は SQLiteOpenHelper から拡張されています。

助けてくれてありがとう。

public String getData()
{
    WhitelistDB DB = new WhitelistDB(this);
    SQLiteDatabase db = DB.getReadableDatabase();

    String[] columns = new String[]{WhitelistDB.KEY_ID, WhitelistDB.KEY_NAME, WhitelistDB.KEY_NUMBER};
    Cursor c = db.query(WhitelistDB.TABLE_NAME, columns, null, null, null, null, null);
    String result = "";

    int count = c.getColumnCount();
    String noEntries = "No entries in whitelist.";

    if(count < 1)
    {
        return noEntries;
    }

    int iRow = c.getColumnIndex(WhitelistDB.KEY_ID);
    int iName = c.getColumnIndex(WhitelistDB.KEY_NAME);
    int iNumber = c.getColumnIndex(WhitelistDB.KEY_NUMBER);

    for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext())
    {
        result = result + c.getString(iRow) + " " + c.getString(iName) + " " + c.getString(iNumber) + "\n";
    }

    db.close();

    return result;
}

public void viewEntries()
{
    TextView tv = (TextView) findViewById(R.id.wlData);
    String info = getData();
    tv.setText(info);
}

これは私が得るエラーです。

07-31 18:42:10.706: E/CursorWindow(10024): Failed to read row 0, column -1 from a CursorWindow which has 7 rows, 3 columns.
07-31 18:42:10.706: D/AndroidRuntime(10024): Shutting down VM
07-31 18:42:10.706: W/dalvikvm(10024): threadid=1: thread exiting with uncaught exception (group=0x41dbe300)
07-31 18:42:10.714: E/AndroidRuntime(10024): FATAL EXCEPTION: main
07-31 18:42:10.714: E/AndroidRuntime(10024): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mutoor.autoreply/com.mutoor.autoreply.WhitelistActivity}: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
07-31 18:42:10.714: E/AndroidRuntime(10024):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
4

1 に答える 1

0

以前にインストールしたデータを次のコマンドでクリアしてみてください。

Settings-> Apps-> [app name]->Clear data

于 2012-08-01T03:04:57.487 に答える