首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用需要API级别11(当前最小值为9) android.app.Activity#onCreateView

调用需要API级别11(当前最小值为9) android.app.Activity#onCreateView
EN

Stack Overflow用户
提问于 2015-08-30 08:20:17
回答 4查看 3.6K关注 0票数 8

在SDK (23)之后,我得到了这个lint错误,我的代码没有做任何更改,它在api级别9的设备上运行得很好,而且我的代码中根本没有调用android.app.Activity#onCreateView。如果我单击自动修复,它会将@SuppressLint("NewApi")像这样放到类@SuppressLint("NewApi") public class MyActivity extends android.support.v4.app.FragmentActivity的声明中,然后错误就消失了,我想确定这是否是正确的方法。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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警告。就像这样:

代码语言:javascript
复制
@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方法有一个空的实现。

票数 7
EN

Stack Overflow用户

发布于 2015-08-30 10:48:53

@SuppressLint("NewApi")是Android工具使用的注释。

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

有关更多信息并做出决定,请参阅Android检查:这里

您也可以使用@TargetApi。

不同之处在于,对于@TargetApi,您可以通过参数在代码中声明您所处理的API级别,这样,如果稍后修改方法以尝试引用比@TargetApi中引用的API级别更新的内容,错误就会再次弹出。

@TargetApi是更好的注释,允许您以更细粒度的方式告诉构建工具"OK,我修复了这类问题“。

票数 1
EN

Stack Overflow用户

发布于 2015-09-19 16:39:52

正如user5292387所提到的,已经添加了oncreateview。而不是压制我用的皮棉

代码语言:javascript
复制
@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的以后版本产生不利影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32294607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档