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

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

Stack Overflow用户
提问于 2015-08-24 11:55:05
回答 7查看 25.9K关注 0票数 12

我是android的新手,我正在开发一个android应用程序。但是我的包行在MainActivity.java类中给出了这个错误。有人能告诉我原因吗?这是我的类,包行给出了这个错误。

代码语言:javascript
复制
package com.example.eventgyaam;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity  {

int counter;

Button add,sub;
TextView display;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    counter = 0;
    add = (Button) findViewById(R.id.bAdd);
    sub = (Button) findViewById(R.id.bSub);
    display = (Button) findViewById(R.id.tvDisplay);
    add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            counter++;
            display.setText("Your total is "+counter);
        }
    });
    sub.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            counter--;
            display.setText("Your total is "+counter);
        }
    });

}
}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-08-24 11:58:17

首先是一些介绍性的细节。有不同级别的Android,在每个级别上,它们都可能引入新的功能,如这里所示。

创建Android应用程序时,可以指定运行应用程序的最低级别。这是在manifest中使用uses-sdk节完成的:有关详细信息,请参见这里

因此,如果您使用仅在11级可用的功能,您的代码将不会像您指定的那样在第8级API上运行。

您要么只能使用当前最小值可用的内容,要么使用最小值。

至于为什么您在包行上出现错误,对于一个似乎不在您展示的源代码中的调用,我不能说。由于您的标题是对android.app.Activity#onCreateView的抱怨,所以R.layout.activity_main视图可能会出现一个由setContentView夸大的问题。或者这可能是兼容性库本身的一个问题,一些并非闻所未闻的东西

但是,与其在这方面做太大的努力,不如考虑简单地将最小值提高到API-11,并完全放弃appcompat的内容。根据这里的数据,只有约2%的安卓用户比Android3.0/API-11(截至2016年6月)的发布时间更早。随着时间的推移,这只会变得更小。

票数 5
EN

Stack Overflow用户

发布于 2015-08-24 12:02:46

对于每个Android,可能都增加了一些新特性,这些特性无法在较低的API版本上工作。因此,要解决这个问题,只需在项目中增加所需的最低API即可。

在您的build.gradle (app-module)中,您会发现这一行:

代码语言:javascript
复制
minSdkVersion 8

改为:

代码语言:javascript
复制
minSdkVersion 11

如果您没有在build.gradle中找到这一行,请检查您的AndroidManifest.xml并将minSdkVersion从8更改为11或任何您想要的:

代码语言:javascript
复制
<uses-sdk
    android:minSdkVersion="11" />

但是现在你的应用程序将只在API 11+上工作,这很好。现在没有人使用API 11,所以这对你来说不会是个问题。

票数 6
EN

Stack Overflow用户

发布于 2015-08-24 12:05:18

错误:

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

如果您查看Activity的javadoc,就会发现public View onCreateView (View parent, String name, Context context, AttributeSet attrs)方法是在API 11中添加的,这就是为什么要得到这个错误。

要么您必须将minSdkVersion8更改为11

或者在类声明级别使用@SuppressLint("NewApi")作为Activity的解决方案,如下所示:

代码语言:javascript
复制
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {

对于Fragment

代码语言:javascript
复制
@SuppressLint("NewApi")
@Override
public void View onCreateView(String name, Context context, AttributeSet attrs) {

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

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

编辑:

您还可以使用@TargetApi(11)而不是@SuppressLint("NewApi")。两者之间有更大的差异,可以找到这里

希望能帮上忙!

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

https://stackoverflow.com/questions/32181705

复制
相关文章

相似问题

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