R.string.value Помощь Android уведомления
С чем дело
CharSequence contentTitle = R.string.value;
Ошибка не может преобразовать из int в CharSequence. Есть ли способ обойти это или я что-то упустил? Я старался
String s = R.string.value + "";
CharSequence contentTitle = s;
возвращает целочисленные значения. Любая помощь?
4 ответа
R.string.value
это вызов статического поля в классе R, который автоматически генерируется Eclipse и который представляет собой сводку всех ваших ресурсов. Чтобы получить строку, вам нужно использовать:
CharSequence contentTitle = getString(R.string.value);
Если вы откроете класс R, вы увидите, что он содержит только числа, которые являются ссылками на скомпилированные ресурсы вашего проекта.
Чтобы получить строку, вам нужно использовать getString(),
но getString () - это метод из класса Context. Если вы хотите использовать этот метод вне вашего класса Activity, вы должны сначала получить ссылку на ваш контекст, а затем вызвать:
String s = mContext.getString(R.string.somestring)
R.string.value возвращает идентификационный номер ссылки 'value' ресурса. Если вы посмотрите на ваш класс R, он будет выглядеть примерно так:
public static final class string {
public static final int value=0x7f040007;
}
У меня возникли проблемы со ссылкой на метод getString(). Точная ошибка, которую Eclipse плюет на меня:
Метод getString(int) не определен для типа DatabaseHelper.MainDatabaseHelper
Прочитав некоторое время, я понял, что вы должны ссылаться на контекст вашего приложения, чтобы получить доступ к методу getString(). Я пытался создать частный вспомогательный класс SQLDatabase в поставщике контента, однако это не позволяло мне ссылаться на метод getString(). Мое решение до сих пор состоит в том, чтобы сделать что-то вроде этого:
private class MainDatabaseHelper extends SQLiteOpenHelper {
MainDatabaseHelper(Context context) {
super(context, context.getString(R.string.createRoutesTable), null, 1);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL((getContext()).getString(R.string.createRoutesTable));
}
}
Обратите внимание на эти две контекстные ссылки:
context.getString()
(getContext ()).getString()
Я не знаю, является ли это оптимальным долгосрочным решением, но оно пока работает. Надеюсь это поможет.
Вы могли бы использовать String s = getResources().getString(R.string.value);
также.