2012-06-28 1 views
3

Примечание: при анализе ресурсов XML Android игнорирует атрибуты XML, которые не поддерживаются текущим устройством. Таким образом, вы можете безопасно использовать атрибуты XML , которые поддерживаются только более новыми версиями, не беспокоясь о о более старых версиях, которые ломаются, когда они сталкиваются с этим кодом. Например, если вы установили targetSdkVersion = "11", ваше приложение включает в себя ActionBar по умолчанию на Android 3.0 и выше. Чтобы добавить элементы меню в панель действий, вам необходимо установить android: showAsAction = "ifRoom" в свой ресурс меню XML. Это безопасно сделать в файле с расширением XML , потому что более старые версии Android просто игнорируют атрибут showAsAction (то есть вам не нужна отдельная версия в res/menu-v11 /).Проблема со встречной совместимостью Android match_parent не будет компилировать eclipse

Источник: http://developer.android.com/training/basics/supporting-devices/platforms.html

^Несмотря на это требование затмение отказывается компилировать неизмененный версию основы фрагмента с того же сайта here.

Сообщение об ошибке получили в жизни:

строковые типы не допускается (в 'layout_width' со значением ' match_parent').

Есть ли в любом случае я могу подавить эту ошибку в XML, например, какой-то тихий тег, который утверждает, что они применимы только к определенному уровню API? В идеале я хочу, чтобы проект работал в Eclipse, а также поддерживал 1.6 обратную совместимость.

ПРИМЕЧАНИЕ. Все другие ошибки относятся к тому, что R не создается, что делает это единственной ошибкой первого поколения.

файл манифеста действительно содержит строку

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> 
+0

1.5 слишком старый, проверьте здесь количество активных устройств на 1.5 http://developer.android.com/about/dashboards/index.html – rajpara

ответ

1

Вы можете скомпилировать новые API, и приложение все равно будет работать в старом API, тем самым избавившись от этих ошибок, если вы не используете какие-либо неподдерживаемые функции в .java-файлах без предварительного предоставления соответствующие проверки. Я думал, что мне пришлось скомпилировать против самого низкого API не самого высокого уровня, но протестировали с использованием 1,6 AVD для запуска проекта, составленного с использованием 4.0, и он работал безупречно.

0

ли вы попробовать с помощью "fill_parent" вместо "match_parent"? Также вы можете создать запись стиля xml с этими атрибутами, разместив их в папках значений-4 (1.6 android) и значений (все остальное), если вы хотите иметь разные значения атрибутов для разных уровней api.

+1

Спасибо за быстрый ответ, если бы я мог проголосовать за это. бы. Как ни странно, значения-4 - это то, что я думал, тоже будет работать.Оказывается, вы можете ** компилировать в новых API, и приложение все равно будет работать в старом API **, пока вы не используете какие-либо неподдерживаемые функции, я думал, что мне пришлось скомпилировать против самого низкого API, а не наибольший. –

0

Если вы создаете приложение против API 8 или ниже, вам необходимо использовать fill_parent. Тем не менее, большинство разработчиков в наши дни используют API 8 в качестве минимум sdk для поддержки, поэтому вам действительно стоит подумать о создании своего приложения против новых API.

+0

Спасибо за быстрый ответ, если бы я мог проголосовать за это. Я рассмотрю совет, но не хочу потерять совместимость, если это необходимо (я все еще планирую использовать более высокие API-функции). Оказывается, вы можете скомпилировать новые API, и приложение все равно будет работать в старом API, если вы не используете какие-либо неподдерживаемые функции, я подумал, что мне пришлось скомпилировать против самого низкого API, не самого высокого. –

Смежные вопросы