Числа вместо слов

Рейтинг: 0Ответов: 2Опубликовано: 14.01.2015

В TextView хочу написать слово

    insInfo.setText(R.string.ins_info + " " + R.string.in);

в итоге выдает цифры вместо слов 2131427369 а должно выйти предложение. В чем может быть проблема?

Ответы

▲ 2Принят

Все дело в том, что есть 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.

▲ 1

Проблема в том, что вы не понимаете как работает setText(R.string.ins_info) - по сути это то же самое что и вызов: setText(context.getString(R.string.ins_info)), как только вы напишете:

 setText(R.string.ins_info+"") //вы немедленно получите тарабарщину

Попробуйте теперь догадаться как надо написать ваш код чтобы все заработало.