在SDK (23)之后,我得到了这个lint错误,我的代码没有做任何更改,它在api级别9的设备上运行得很好,而且我的代码中根本没有调用android.app.Activity#onCreateView。如果我单击自动修复,它会将@SuppressLint("NewApi")像这样放到类@SuppressLint("NewApi") public class MyActivity extends android.support.v4.app.FragmentActivity的声明中,然后错误就消失了,我想确定这是否是正确的方法。
发布于 2015-09-02 11:49:28
我也遇到了同样的问题。
如果您查看活动类(http://developer.android.com/reference/android/app/Activity.html#onCreateView%28android.view.View,%20java.lang.String,%20android.content.Context,%20android.util.AttributeSet%29)的javadoc,您将看到在API 11中添加了公共视图onCreateView (View,String,context,AttributeSet吸引人)方法。
我没有在类声明级别使用@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 11方法有一个空的实现。
发布于 2015-08-30 10:48:53
@SuppressLint("NewApi")是Android工具使用的注释。
代码中的某些内容不是最优的,或者可能崩溃。通过在那里传递NewApi,您将消除所有警告,这些警告将告诉您是否使用在minSdkVersion之后引入的任何API。
有关更多信息并做出决定,请参阅Android检查:这里
您也可以使用@TargetApi。
不同之处在于,对于@TargetApi,您可以通过参数在代码中声明您所处理的API级别,这样,如果稍后修改方法以尝试引用比@TargetApi中引用的API级别更新的内容,错误就会再次弹出。
@TargetApi是更好的注释,允许您以更细粒度的方式告诉构建工具"OK,我修复了这类问题“。
发布于 2015-09-19 16:39:52
正如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操作系统和更高版本的设备。对超级操作系统的第二次调用是针对运行少于蜂窝Android操作系统的设备。我认为它看起来更干净,而不是返回null。但是,android文档确实声明返回null将导致默认行为。这两种解决方案都应该有效,但是我对返回null表示怀疑,因为这可能会对Android的以后版本产生不利影响。
https://stackoverflow.com/questions/32294607
复制相似问题