Приложение аварийно завершает загрузку базы данных при первом запуске - PullRequest
0 голосов
/ 22 октября 2018

В моем приложении я использую сервис для получения данных из JSON, а затем сохраняю их в базе данных.

при запуске приложения на новом устройстве происходит сбой без каких-либо ошибок !

Но когда я закомментирую код для загрузки в TextViews, он отлично работает.После этого он просто работает нормально, даже когда я возвращаю код для подачи TextViews.

update: Служба, предназначенная для подачи базы данных, не работает, пока я не закомментирую кодыдля подачи TextViews.

Код для подачи TextViews:

//this service contains JSON to DB code
Intent intent = new Intent(MainActivity.this, GetdataService.class);
startService(intent);

cursor = DBOps.Ops.getTheOne();
cursor.moveToNext();

//app crashes at this line    
wordText.setText(cursor.getString(cursor.getColumnIndex(DBContracts.Word.TITLE)));
phonetic = cursor.getString(cursor.getColumnIndex(DBContracts.Word.PHONETIC));
meaningText.setText(cursor.getString(cursor.getColumnIndex(DBContracts.Word.MEANING)));
exampleText.setText(cursor.getString(cursor.getColumnIndex(DBContracts.Word.EXAMPLE)));

Способ получения элемента:

public static Cursor getTheOne(){
    return db.query(DBContracts.Word.TABLE_NAME,
            null,
            null,
            null,
            null,
            null,
            DBContracts.Word._ID + " DESC LIMIT 1"
    );
}

1 Ответ

0 голосов
/ 22 октября 2018

Пожалуйста, рассмотрите возможность проверки стека при возникновении сбоев.

Но из вашего описания: сбои при первом запуске, работает при последующих запусках - это говорит об отсутствии данных при первом запуске, но при последующих запусках запрос возвращаетнекоторые данные.

cursor.moveToNext() возвращает логическое значение, которое имеет значение true, если перемещение выполнено успешно, т.е. имеются некоторые данные.Вы всегда должны проверять курсор moveTo...() возвращаемые значения.Сам сбой из-за Cursor#getString() в недопустимой строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...