Не удается разрешить @style/Theme.Sherlock

Я пытаюсь использовать Actionbar Sherlock 4, ориентируясь на SDK 15 и min SDK 8. Следуя указаниям, представленным на веб-сайте использования, и отличным видео, размещенным здесь: http://www.youtube.com/watch?v=avcp6eD_X2k

Я все еще сталкиваюсь с проблемой. Когда я пытаюсь добавить android:theme="@style/Theme.Sherlock" в свой файл манифеста, я получаю сообщение об ошибке:

Не найден ресурс, соответствующий заданному имени (в «теме» со значением «@style/Theme.Sherlock»).

Я включил проект библиотеки Actionbar Sherlock в свой проект, и операторы импорта есть и не выдают никаких ошибок, и я

расширяет SherlockActivity, реализует ActionBar.TabListener

точно так же, как в демо-коде и документации. Тем не менее, eclipse выдает мне эту ошибку. Есть идеи?


person Ten_Ten_Steve    schedule 27.04.2012    source источник
comment
Вы используете затмение? Вы отметили панель действий Sherlock как библиотеку Android?   -  person dmon    schedule 27.04.2012


Ответы (6)


Я столкнулся со странной аномалией, которая может помочь!

Собрал проект Android, который использует ABS, запустив его на Gingerbread, работает нормально, в ICS происходит сбой, из-за этого происходит сбой под ICS, проверьте свой AndroidManifest.xml (обрезал биты для краткости.. .

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" android:theme="@style/Theme.Sherlock">

Это была часть android:theme, которая вызвала сбой в ICS, она отлично работала в Gingerbread и более старых версиях!. Решение было удалить его полностью! Затем из вашей деятельности сделайте следующее:

@Override
public void onCreate(Bundle savedInstanceState) {
   if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH){
        this.setTheme(com.actionbarsherlock.R.style.Theme_Sherlock);
   }
   super.onCreate(savedInstanceState);
   ... // MORE CODE ....
}

Это устранило сбой в ICS, стиль темы не нравится ICS, но он отлично работает для обеих версий ниже 2.3 и 4.0 и выше ... странная ошибка, но я обнаружил ее по счастливой случайности!

Не забудьте применить тему перед вызовом собственного onCreate базового класса!

person t0mm13b    schedule 27.04.2012
comment
В этом нет необходимости. Я использовал ActionBarSherlock во многих примерах приложений на всем, от Android 2.1 до 4.0.3, со стилем, определенным в <application>, без каких-либо побочных эффектов. Хотя ваш подход может работать в настоящее время, я бы не стал полагаться на это — если вы используете SherlockActivity или kin, вам действительно следует использовать правильную тему. - person CommonsWare; 27.04.2012
comment
Я позволю себе не согласиться с тем, что является правильной темой, используемой в ABS... просто говорю, что это последняя и лучшая используемая версия. - person t0mm13b; 27.04.2012
comment
Это не верно. Theme.Sherlock (и его варианты) можно использовать на всех уровнях API. Если он падает на ICS, то это по другой причине. - person Jake Wharton; 27.04.2012
comment
@Roylee Вам нужно очистить проект и перекомпилировать исходный код;) - person t0mm13b; 28.03.2013
comment
@ t0mm13b У вас есть опыт работы с github android или биткойн-кошельком на eclipse? можно ли передать мне руководство? Потому что я пробовал maven, но не дал результата, интересно, не ошибся ли я. - person RLEE; 29.03.2013

Ловушка, с которой я столкнулся, заключалась в следующем: ссылка на проект ActionBarSherlock должна быть в разделе Android-> Библиотеки свойств проекта, в то время как я добавлял его в Путь сборки-> Библиотеки.

person domsom    schedule 11.07.2012
comment
этот ответ спас меня от боли - person Display Name; 05.11.2013

Моя стандартная процедура включения проекта библиотеки в Eclipse выглядит следующим образом:

  • Импорт проекта библиотеки
  • Щелкните правой кнопкой мыши Свойства проекта библиотеки -> Android -> Установить цель сборки проекта (убедитесь, что библиотека и основной проект совпадают)
  • Щелкните правой кнопкой мыши проект библиотеки Android Tools -> Fix Project Properties
  • Выберите проект библиотеки, затем Project -> Clean...
  • Выберите основной проект, затем Project -> Clean...

Это должно исправить все, что вас беспокоит.

person dbyoung    schedule 27.04.2012
comment
Спасибо за быстрый ответ. К сожалению, этот трюк не устранил ошибку. - person Ten_Ten_Steve; 27.04.2012

Наконец я нахожу решение:

  1. ВАЖНЫЙ! Скопируйте один и тот же android-support-v4.jar в оба проекта: в библиотеку и в свой проект (это основная проблема).
  2. Импортируйте проект "библиотека" В ВАШУ РАБОЧУЮ ОБЛАСТЬ
  3. Щелкните правой кнопкой мыши Свойства проекта библиотеки -> Android -> Отметьте «Целевое имя» 4.x (любое, уровень API 14, 15 или 16). Нижняя галочка "Есть библиотека".
  4. В свойствах перейдите в «Путь сборки Java», вкладку «Библиотеки» и найдите «android-support-v4.jar», как правило, в «Зависимости Android». ОК и закрыть свойства.
  5. Щелкните правой кнопкой мыши проект библиотеки Android Tools -> Fix Project Properties
  6. в меню «Проект» -> «Очистить...» и выберите для очистки проекта «Библиотека».

В этом месте должна быть сделана "библиотека" вашего проекта (без ошибок)

  1. Создайте или импортируйте свой собственный проект. Пример "Мой проект"
  2. В свойствах перейдите в «Путь сборки Java», вкладку «Библиотеки» и найдите «android-support-v4.jar», как правило, в «Зависимости Android».
  3. Теперь перейдите на вкладку «Проекты». Добавить... и выберите проект "библиотека".
  4. Теперь в свойствах перейдите в Android -> Отметьте «Целевое имя» 4.x (любое, уровень API 14,15 или 16). ВАЖНО: Должен совпадать с проектом "библиотека". Внизу "Is Library" должен быть снят флажок и в этом месте нажмите Add... И выберите проект "library". Ок и закрыть свойства.
  5. Щелкните правой кнопкой мыши проект "MyProject" Инструменты Android -> Исправить свойства проекта.
  6. в меню «Проект» -> «Очистить...» и выберите очистку проекта «Мой проект».

Уже сейчас ваш проект должен быть сделан. Если ошибка сохраняется, перезапустите Eclipse.

person German Tamayo    schedule 18.01.2013

Я решил эту проблему, выполнив следующие 2 шага в своих проектах:

  1. Удалите «библиотеку» из «свойств проекта»/пути сборки и добавьте библиотеку в «свойства проекта»/Android/Library.
  2. Щелкните правой кнопкой мыши проект «Инструменты Android» -> «Добавить библиотеку поддержки».
person Houcheng    schedule 24.01.2013

после импорта обоих проектов, то есть библиотеки и настройки активности, сначала очистите и создайте их. Затем щелкните правой кнопкой мыши проект settingsActivity- > свойства- > выберите второй вариант в левом меню (например, Android). справа их раздел библиотеки, просто нажмите «Добавить библиотеку». prper path автоматически появится в этом кадре. Это решило мою проблему, у меня не было ошибок.

person user3780468    schedule 26.06.2014