Числа вместо слов
В TextView хочу написать слово
insInfo.setText(R.string.ins_info + " " + R.string.in);
в итоге выдает цифры вместо слов 2131427369 а должно выйти предложение. В чем может быть проблема?
В TextView хочу написать слово
insInfo.setText(R.string.ins_info + " " + R.string.in);
в итоге выдает цифры вместо слов 2131427369 а должно выйти предложение. В чем может быть проблема?
Все дело в том, что есть 2 разных метода
setText(int resourceId);
setText(CharSequence text);
Так вот, R.string.ins_info
- это id ресурса, который содержит строку. этот id имеет тип int
.
А второй метод принимает CharSequence
- интерфейс, который как раз и реализует класс String
.
Так вот, когда вы вызываете
insInfo.setText(R.string.ins_info + " " + R.string.in);
вызывается второй метод.
Почему? Потому, что выражение вида R.string.ins_info + " " + R.string.in
невозможно привести к типу int
, но можно привести к String
. Собственно, его и приводить ненадо, оно как раз и имеет тип String
.
Проблема в том, что вы не понимаете как работает setText(R.string.ins_info)
- по сути это то же самое что и вызов: setText(context.getString(R.string.ins_info))
, как только вы напишете:
setText(R.string.ins_info+"") //вы немедленно получите тарабарщину
Попробуйте теперь догадаться как надо написать ваш код чтобы все заработало.