データベースが空の場合、またはデータベースが作成されたばかりの場合、このエラーが発生します。
03-10 17:34:40.758:E / AndroidRuntime(1144):java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {com.example.adressbooktake2 / com.example.adressbooktake2.MainActivity}:android.database.CursorIndexOutOfBoundsException:インデックス0が要求され、サイズは0
これが私のメインクラスのコードです。
public class MainActivity extends Activity {
DBAdaptor db;
Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new DBAdaptor(this).open();
cursor = db.getAllRecords();
DisplayRecord(cursor);
}
次に、DBAdaptorクラスでこのコードを呼び出します。
public Cursor getAllRecords()
{
Cursor gaRecords = db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME,
KEY_PHONENUMBER, KEY_EMAIL}, null, null, null, null, null);
gaRecords.moveToFirst();
return gaRecords;
}
}
問題は、データベースが作成されたばかりのとき、データがないため、moveToFirst()が移動する場所がないことだと思います。しかし、ストックされたデータベースがある場合はmoveToFirst()が必要なので、これを回避する方法がわかりません。
誰かが解決策を見ますか?問題を正しく診断しましたか?