Способ чтения этого сообщения - «метод getOne()
принимает int
, но вы передаете java.lang.String
». Таким образом, вы должны выяснить, почему передаваемое вами значение равно String
.
ENTRADAS = mEntradasDAO.getOne(getIntent().getStringExtra(EXTRA_ENTRADA_ID));
В вашем случае, однако, это довольно просто. Вы передаете ему значение getStringExtra()
вызова, которое всегда будет String
.
Есть два пути, чтобы исправить это. То, что вы выберете, будет зависеть от того, является ли значение, которое вы вводите в Intent
, на самом деле String
или int
.
intent.putExtra(UpdateEntradaActivity.EXTRA_ENTRADA_ID, entradas.getIdEntrada());
Если entradas.getIdEntrada()
- это int
, то вы можете изменить другую сторону, чтобы просто получить int
extra:
ENTRADAS = mEntradasDAO.getOne(getIntent().getIntExtra(EXTRA_ENTRADA_ID, 0));
Если entradas.getIdEntrada()
является String
, то вам придется изменить другую сторону, чтобы получить String
, а затем проанализировать его как int
String idString = getIntent().getStringExtra(EXTRA_ENTRADA_ID);
int idInt = Integer.parseInt(idString);
ENTRADAS = mEntradasDAO.getOne(idInt);
Редактировать
Как упоминалось в комментариях, возвращаемое значение метода getOne()
является LiveData<Entradas>
, а не просто Entradas
. Хотя это не рекомендуемый способ использования LiveData
, для целей этого вопроса вы можете получить значение, вызвав getValue()
.
int idInt = getIntent().getIntExtra(EXTRA_ENTRADA_ID, 0);
ENTRADAS = mEntradasDAO.getOne(idInt).getValue();
String idString = getIntent().getStringExtra(EXTRA_ENTRADA_ID);
int idInt = Integer.parseInt(idString);
ENTRADAS = mEntradasDAO.getOne(idInt).getValue();