R.строка.значение справки Android notification

#android #int #charsequence

#Android #int #последовательность символов

Вопрос:

в чем дело

  CharSequence contentTitle = R.string.value;
  

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

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

возвращает целые значения.
Есть какая-нибудь помощь?

Ответ №1:

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

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

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

Комментарии:

1. @Sephy У меня возникла проблема с getString (), я продолжаю получать «Метод getString (int) не определен …» что я делаю не так?

2. Что вы пытаетесь получить с помощью этого метода?

3. @Sephy Я просто пытаюсь получить фактическое значение, хранящееся в strings.xml

4. Возможно, это помогло бы решить проблему? => context.getString(R.string.value)

5. Вы также могли бы попробовать getResources().getString(R.string.value)

Ответ №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(). Точная ошибка, которую 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()

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

Ответ №4:

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

Комментарии:

1. Как получить доступ к некоторому классу Java (не activity), такому как ViewPagerAdapter. У меня нет там ‘getContext’?