调用需要 API 级别 11(当前最小值为 9)android.app.Activity#onCreateView
Call requires API level 11(current min is 9) android.app.Activity#onCreateView
SDK 更新 (23) 后,我收到此 lint 错误,我没有对我的代码进行任何更改,它在 api 级别 9 的设备上工作正常。我也没有完全在我的代码中调用 android.app.Activity#onCreateView。如果我单击自动修复,它会将 @SuppressLint("NewApi") 放到 class @SuppressLint("NewApi")
public class MyActivity extends android.support.v4.app.FragmentActivity
的声明中,这样错误就会消失,我想确定是否是这样去。
@SuppressLint("NewApi") 是 Android Lint 工具使用的注释。
您的代码中有些地方不是最优的或者可能会崩溃。通过在那里传递 NewApi,您将抑制所有会告诉您是否正在使用 minSdkVersion
之后引入的任何 API 的警告
有关更多信息并做出决定,请查看 Android Lint 检查:HERE
你也可以使用@TargetApi。
不同的是,使用@TargetApi,您通过参数声明您在代码中处理的API级别,以便您稍后修改方法尝试时再次弹出错误引用了比@TargetApi 中引用的 API 级别更新的内容。
@TargetApi 是更好的注释,允许您以更细粒度的方式告诉构建工具"OK, I fixed this category of problems"。
我也遇到了同样的问题
如果您查看 Activity class (http://developer.android.com/reference/android/app/Activity.html#onCreateView%28android.view.View,%20java.lang.String,%20android.content.Context,%20android.util.AttributeSet%29) 的 javadoc,您会看到方法 public View onCreateView (View parent, String name, Context context, AttributeSet attrs) 添加于 API 11.
我没有在 class 声明级别使用 @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;
}
这样,以后对 class 代码的任何添加仍将由 lint 检查,但 lint 将停止用错误标记此方法。
ETA:class 的 Javadoc 表明两个 onCreateView(...) 方法 return null 作为默认行为,并且 pre API 11 方法有一个空实现.
如 user5292387 所述,添加了 oncreateview。我没有抑制 lint,而是使用
@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 及更高级别的设备。第二次调用 super 是针对 运行 少于 Honeycomb Android OS 的设备。我认为它看起来更干净而不是返回 null。然而 android 文档确实声明返回 null 将导致默认行为。两种解决方案都应该有效,但我对返回 null 持怀疑态度,因为这可能会对 Android SDK 的后续版本产生不利影响。
每个人似乎都缺少的一点是他正在使用 v4 支持库中的 FragmentActivity。根据定义,这个 class 应该一直兼容到 Android API 4. 不应发出警告,因为 FragmentActivity 提供了它自己的 onCreateVivew() 实现。
在我看来这是一个 Lint 错误。
我认为@SupressLint("NewAPI") 是解决 Lint 错误的最简单方法(因为我根本不认为这是错误)。还要记住,Lint 错误不是编译错误。它们是给你的建议,你的代码可能有问题,或者有更好的方法。
SDK 更新 (23) 后,我收到此 lint 错误,我没有对我的代码进行任何更改,它在 api 级别 9 的设备上工作正常。我也没有完全在我的代码中调用 android.app.Activity#onCreateView。如果我单击自动修复,它会将 @SuppressLint("NewApi") 放到 class @SuppressLint("NewApi")
public class MyActivity extends android.support.v4.app.FragmentActivity
的声明中,这样错误就会消失,我想确定是否是这样去。
@SuppressLint("NewApi") 是 Android Lint 工具使用的注释。
您的代码中有些地方不是最优的或者可能会崩溃。通过在那里传递 NewApi,您将抑制所有会告诉您是否正在使用 minSdkVersion
之后引入的任何 API 的警告有关更多信息并做出决定,请查看 Android Lint 检查:HERE
你也可以使用@TargetApi。
不同的是,使用@TargetApi,您通过参数声明您在代码中处理的API级别,以便您稍后修改方法尝试时再次弹出错误引用了比@TargetApi 中引用的 API 级别更新的内容。
@TargetApi 是更好的注释,允许您以更细粒度的方式告诉构建工具"OK, I fixed this category of problems"。
我也遇到了同样的问题
如果您查看 Activity class (http://developer.android.com/reference/android/app/Activity.html#onCreateView%28android.view.View,%20java.lang.String,%20android.content.Context,%20android.util.AttributeSet%29) 的 javadoc,您会看到方法 public View onCreateView (View parent, String name, Context context, AttributeSet attrs) 添加于 API 11.
我没有在 class 声明级别使用 @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;
}
这样,以后对 class 代码的任何添加仍将由 lint 检查,但 lint 将停止用错误标记此方法。
ETA:class 的 Javadoc 表明两个 onCreateView(...) 方法 return null 作为默认行为,并且 pre API 11 方法有一个空实现.
如 user5292387 所述,添加了 oncreateview。我没有抑制 lint,而是使用
@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 及更高级别的设备。第二次调用 super 是针对 运行 少于 Honeycomb Android OS 的设备。我认为它看起来更干净而不是返回 null。然而 android 文档确实声明返回 null 将导致默认行为。两种解决方案都应该有效,但我对返回 null 持怀疑态度,因为这可能会对 Android SDK 的后续版本产生不利影响。
每个人似乎都缺少的一点是他正在使用 v4 支持库中的 FragmentActivity。根据定义,这个 class 应该一直兼容到 Android API 4. 不应发出警告,因为 FragmentActivity 提供了它自己的 onCreateVivew() 实现。
在我看来这是一个 Lint 错误。
我认为@SupressLint("NewAPI") 是解决 Lint 错误的最简单方法(因为我根本不认为这是错误)。还要记住,Lint 错误不是编译错误。它们是给你的建议,你的代码可能有问题,或者有更好的方法。