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); также.

Другие вопросы по тегам