#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’?