调用需要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像这样,错误消失,我要确定这是否是要走的路。

Solutions Collecting From Web of "调用需要API级别11(当前最小为9)android.app.Activity#onCreateView"

我也遇到了同样的问题。

如果你看一下Activity类的javadoc( 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,Context context,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 for class表示onCreateView(…)方法返回null作为默认行为,并且pre API 11方法有一个空的实现。

@SuppressLint(“NewApi”)是Android Lint工具使用的注释。

代码中的某些内容不是最佳的,或者可能会崩溃。 通过在那里传递NewApi,您将抑制所有警告,告诉您是否使用在minSdkVersion之后引入的任何API

有关更多信息,请参阅Android Lint Checks: HERE

你也可以使用@TargetApi。

不同之处在于,通过@TargetApi,你可以通过参数声明你在代码中处理了什么API级别,这样如果你稍后修改方法来引用比API级别更新的API @TargetApi。

@TargetApi是更好的注释,允许你以更精细的方式告诉构build工具“好的,我解决了这个问题”。

正如user5292387所提到的,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); } 

超级的第一个调用是运行蜂窝Android OS和更大的设备。 第二个超级调用是运行比Honeycomb Android OSless的设备。 我认为它看起来更干净,而不是返回null。 然而,android文档没有声明返回null将导致默认行为。 任何解决scheme都应该可以工作,但是我怀疑返回null,因为这可能会在Android SDK的更高版本中产生不利影响。

每个人似乎都缺less的东西是他正在使用v4支持库中的FragmentActivity。 根据定义,这个类应该一直兼容Android API 4.由于FragmentActivity提供了自己的onCreateVivew()实现,所以不应该发出警告。

在我看来这是一个Lint bug。

我认为@SupressLint(“NewAPI”)是解决Lint错误的最简单方法(因为我不相信这是一个错误)。 还要记住,Lint错误不是编译错误。 他们向您build议您在代码中可能存在问题,或者有更好的方法来解决问题。