R.string.value Помощь Android уведомления - PullRequest
22 голосов
/ 29 июля 2010

что такое сделка с

 CharSequence contentTitle = R.string.value;

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

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

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

Ответы [ 4 ]

55 голосов
/ 29 июля 2010

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

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

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

7 голосов
/ 28 декабря 2011

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

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

String s = mContext.getString(R.string.somestring)
1 голос
/ 04 апреля 2012

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 ()

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

0 голосов
/ 30 октября 2013

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

...