我是android的新手,我正在开发一个android应用程序。但是我的包行在MainActivity.java类中给出了这个错误。有人能告诉我原因吗?这是我的类,包行给出了这个错误。
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);
}
});
}
}发布于 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月)的发布时间更早。随着时间的推移,这只会变得更小。
发布于 2015-08-24 12:02:46
对于每个Android,可能都增加了一些新特性,这些特性无法在较低的API版本上工作。因此,要解决这个问题,只需在项目中增加所需的最低API即可。
在您的build.gradle (app-module)中,您会发现这一行:
minSdkVersion 8改为:
minSdkVersion 11如果您没有在build.gradle中找到这一行,请检查您的AndroidManifest.xml并将minSdkVersion从8更改为11或任何您想要的:
<uses-sdk
android:minSdkVersion="11" />但是现在你的应用程序将只在API 11+上工作,这很好。现在没有人使用API 11,所以这对你来说不会是个问题。
发布于 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中添加的,这就是为什么要得到这个错误。
要么您必须将minSdkVersion从8更改为11
或者在类声明级别使用@SuppressLint("NewApi")作为Activity的解决方案,如下所示:
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {对于Fragment
@SuppressLint("NewApi")
@Override
public void View onCreateView(String name, Context context, AttributeSet attrs) {@SuppressLint("NewApi")是Android工具使用的注释。
当代码中的某些东西不是最优或可能崩溃时,Lint就会告诉您。通过在那里传递NewApi,您将消除所有警告,这些警告会告诉您是否使用了minSdkVersion之后引入的任何API
编辑:
您还可以使用@TargetApi(11)而不是@SuppressLint("NewApi")。两者之间有更大的差异,可以找到这里。
希望能帮上忙!
https://stackoverflow.com/questions/32181705
复制相似问题