当前位置: 首页 > 知识库问答 >
问题:

调用需要API级别11(当前最小值为9)的android。应用程序。活动#onCreateView

罗鸿福
2023-03-14

在SDK更新(23)之后,我得到了这个lint错误,我没有对我的代码做任何更改,它在api级别为9的设备上运行良好。另外,我在代码中根本不调用android.app.活动#onCreateView。如果我单击自动修复,它会将@SuppressLint(NewApi)放入类的声明中@SuppressLint(NewApi)公共类MyActive扩展android.support.v4.app.FragmentActive,这样错误就会消失,我想确定这是否是要走的路。

共有3个答案

萧鸿轩
2023-03-14

用户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的第一个调用是针对运行蜂巢Android操作系统及更高版本的设备。对super的第二个调用是针对运行低于Android操作系统的设备。我认为它看起来更干净,而不是返回空值。然而,android文档确实指出,返回null将导致默认行为。这两种解决方案都应该有效,但我对返回null持怀疑态度,因为这可能会对Android SDK的后续版本产生不利影响。

梁丘波
2023-03-14

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

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

要了解更多信息并做出决定,请查看Android Lint Checks:这里

你也可以使用@TargetApi。

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

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

封梓
2023-03-14

我也遇到了同样的问题。

如果你看一下活动类的javadoc(http://developer.android.com/reference/android/app/Activity.html#onCreateView(android.view.view、java.lang.String、android.content.Context、android.util.AttributeSet)),您将看到方法public view onCreateView(查看父对象、字符串名称、上下文上下文、AttributeSet attrs)被添加到API 11中。

我没有在类声明级别使用@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作为默认行为,并且API 11之前的方法有一个空的实现。

 类似资料:
  • 问题内容: 我是JSON的新手。我按照本教程创建了示例应用程序。当我尝试将代码复制到我的日食时,它显示错误。 请指教。谢谢 问题答案: 转到android AndroidManifest.xml 在您的文件中是8 将SDK版本更改为9,如下所示

  • 问题内容: 我是android的新手,并且正在开发android应用程序。但是我的包装行在MainActivity.java类中给出了此错误。谁能告诉我这的原因吗?这是我的课程,打包行给出了此错误。 问题答案: 首先,介绍一些细节。有不同 级别 的Android API,每个级别可能会引入新功能,如此处所示。 创建Android应用程序时,您指定运行应用程序的最低级别。这是在做与节:看到这里了解详

  • 我的代码中有这样一行: 显示以下错误: 调用需要API级别16(当前最小值为14) 如果API级别较高,它是否限制了我的应用程序可以使用的设备数量?

  • 我正在尝试添加运行时权限android(6.0.1)API 23,如果我使用SDK版本(最小和目标版本均为23)它很好,如下所示, 如果我改变android:minSdkVersion(小于23) 例如: 我在下面收到错误: 调用需要API级别23(当前最小值为14):android.app.Activity#requestPermissions,checkSelfPermission 对于以下两

  • 我刚刚开始做Android开发,或多或少遵循http://developer.android.com/training/basics/firstapp/starting-activity.html教程,有一件事一直困扰着我:我有两个类,都是使用“Android活动”创建向导创建的: 和 Eclipse不断给我以下错误: 调用需要API级别11(当前最小值为8):android。应用程序。活动#ge

  • 我正在实现谷歌的方向API。我的应用程序支持和。 是否有解决方案,或者我应该检查用户的版本,并允许此功能(如果其版本受支持)? 错误: 调用需要API级别26(当前最小值为23):java。时间瞬间#现在少了。。。(Ctrl-F1)检查信息:此检查扫描应用程序中的所有Android API调用,并警告此应用程序针对的所有版本上不可用的任何调用(根据清单中的最小SDK属性)。如果你真的想使用这个AP