Для вызова требуется уровень API 11 (текущий мин – 9) android.app.Activity # onCreateView

После обновления SDK (23), я получаю эту ошибку lint, я не внес никаких изменений в свой код, и он отлично работает на устройствах с уровнем api 9. Также я не вызываю android.app.Activity # onCreateView в Мой код вообще. Если я нажму авторефиксировать, он добавит @SuppressLint («NewApi») к объявлению @SuppressLint("NewApi") public class MyActivity extends android.support.v4.app.FragmentActivity класса класса @SuppressLint("NewApi") public class MyActivity extends android.support.v4.app.FragmentActivity как это, и ошибка уходит, я Хочу быть уверенным, что это путь.

Solutions Collecting From Web of "Для вызова требуется уровень API 11 (текущий мин – 9) android.app.Activity # onCreateView"

Я столкнулся с той же проблемой.

Если вы посмотрите на javadoc для класса Activity ( http://developer.android.com/reference/android/app/Activity.html#onCreateView%28android.view.View ,%20java.lang.String,%20android .content.Context,% 20android.util.AttributeSet% 29 ), вы увидите, что в API 11 был добавлен метод public View onCreateView (View parent, String name, контекст контекста, AttributeSet attrs) .

Вместо использования @SuppressLint («NewApi») на уровне объявления класса я добавил этот конкретный метод к моему коду и подавил предупреждение lint для объявления метода. Вот так:

 @SuppressLint("NewApi") public View onCreateView(View parent, String name, Context context, AttributeSet attrs) { if(Build.VERSION.SDK_INT >= 11) return super.onCreateView(parent, name, context, attrs); return null; } 

Таким образом, любые будущие дополнения к коду класса будут по-прежнему проверяться lint, но lint перестанет помечать этот метод с ошибкой.

ETA: Javadoc для класса указывает, что оба метода onCreateView (…) возвращают значение null в качестве поведения по умолчанию и что метод pre API 11 имеет пустую реализацию.

@SuppressLint («NewApi») – это аннотация, используемая инструментом Android Lint.

Что-то в вашем коде не является оптимальным или может привести к сбою. Пропуская NewApi, вы подавляете все предупреждения, которые расскажут вам, используете ли вы какой-либо API, введенный после вашего minSdkVersion

Для получения дополнительной информации и принятия решения посмотрите Android Lint Checks: ЗДЕСЬ

Также вы можете использовать @TargetApi.

Разница заключается в том, что с помощью @TargetApi вы объявляете через параметр какой уровень API, который вы указали в своем коде, чтобы ошибка снова появилась, если позже вы измените метод, чтобы попытаться ссылаться на нечто новое, чем уровень API, приведенный в @TargetApi.

@TargetApi – лучшая аннотация, позволяет рассказать инструменты сборки «ОК, я исправил эту категорию проблем» более тонко.

Как упоминалось пользователем5292387, добавлено oncreateview. Вместо подавления линта я использовал

 @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public View onCreateView(View parent, String name, Context context, AttributeSet attrs) { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? super.onCreateView(parent, name, context, attrs) : super.onCreateView(name, context, attrs); } 

Первый вызов super – для устройств, на которых работает Honeycomb Android OS и выше. Второй вызов супер – для устройств, работающих меньше, чем Honeycomb Android OS. Я думаю, что он выглядит чище, а не возвращает null. Однако в документации по android указывается, что возвращение null приведет к поведению по умолчанию. Любое решение должно работать, однако я скептически отношусь к возврату null, поскольку это может иметь неблагоприятные последствия в более поздних версиях Android SDK.

Что-то, что кажется всем пропавшим, заключается в том, что он использует FragmentActivity из библиотеки поддержки v4. По определению этот класс должен быть полностью совместим с Android API 4. Предупреждение не должно выдаваться, поскольку FragmentActivity обеспечивает собственную реализацию onCreateVivew ().

Мне кажется, это ошибка Lint.

Я думаю, что @SupressLint («NewAPI») – самый простой способ обойти ошибку Lint (поскольку я не считаю, что это ошибка вообще). Также помните, что ошибки Lint не являются ошибками компиляции. Это советы для вас, что у вас могут быть проблемы с вашим кодом или есть лучший способ сделать это.