Подтвердить что ты не робот

R.string.value Справка по андроидному уведомлению

какая сделка с

 CharSequence contentTitle = R.string.value;

Ошибка не может преобразовать из int в CharSequence. Есть ли способ обойти это, или я что-то пропустил? я попробовал

String s = R.string.value + "";
CharSequence contentTitle = s;

возвращает значения целых чисел. Любая помощь?

4b9b3361

Ответ 1

R.string.value - это вызов статического поля в классе R, который автоматически генерируется Eclipse и который представляет собой сводку всех ваших ресурсов. Чтобы получить строку, вам необходимо использовать:

CharSequence contentTitle = getString(R.string.value);

Если вы откроете класс R, вы увидите, что он содержит только числа, которые являются ссылками на скомпилированные ресурсы вашего проекта.

Ответ 2

Чтобы получить строку, вам нужно использовать getString(),

но getString() - это метод из класса Context. Если вы хотите использовать этот метод вне класса Activity, сначала необходимо получить ссылку на свой контекст, а затем вызвать:

String s = mContext.getString(R.string.somestring)

Ответ 3

R.string.value возвращает ссылочный идентификационный номер ресурса 'value'. Если вы посмотрите на свой класс R, он будет выглядеть примерно так:

public static final class string {
  public static final int value=0x7f040007;
}

У меня возникли проблемы с ссылкой на метод getString(). Точная ошибка, которую Spit на меня запихивает:

Метод getString (int) - undefined для типа 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));
    }
}

Обратите внимание на эти две ссылки на контекст:

Контекст.getString()

(getContext()).getString()

Я не знаю, является ли это оптимальным долгосрочным решением, но, похоже, оно работает на данный момент. Надеюсь, это поможет.

Ответ 4

Вы также можете использовать String s = getResources().getString(R.string.value);.