我是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);
}
});
}
}
答案 0 :(得分:5)
对于每个Android API,可能会添加新功能,这些功能无法在较低的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,所以对你来说这应该不是问题。
答案 1 :(得分:5)
错误:强>
调用需要API级别11(当前最小值为8) android.app.Activity#onCreateView
如果您查看Activity类的javadoc,您会发现API 11中添加了方法public View onCreateView (View parent, String name, Context context, AttributeSet attrs)
,这就是您收到此错误的原因。
您必须将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工具使用的注释。
minSdkVersion
之后引入的任何API
编辑:
您也可以使用@TargetApi(11)
代替@SuppressLint("NewApi")
。可以找到这些之间的更多差异here。
希望它有所帮助!
答案 2 :(得分:4)
首先,介绍一些细节。 Android API有级别,根据here,每个级别都可以引入新功能。
创建Android应用程序时,指定应用程序运行的最低级别。这是在manifest
中使用uses-sdk
节完成的:有关详细信息,请参阅here。
因此,如果您使用仅在第11级提供的功能,则您的代码不会在您已指定的8级API上运行。
您必须只使用当前最低价格或最低价格。
至于为什么你似乎在包装行上收到错误,并且对于你似乎没有在我们向我们展示的源代码中的电话,我无法说。由于它根据您的标题抱怨android.app.Activity#onCreateView
,因此可能成为R.layout.activity_main
被setContentView
夸大的问题}。或者它可能是兼容性库本身的问题something that's not unheard of。
然而,你可能想要考虑简单地将最小值提高到API-11并完全放弃appcompat
的东西,而不是努力使用太多。根据{{3}},只有约2%的Android用户仍然早于Android-3.0 / API-11(截至2016年6月)发布的版本。随着时间的推移,这种情况只会越来越小。
答案 3 :(得分:1)
因为API 11中添加的片段和您当前的minSDK = 8 ,您可以看到here
您正在使用AppCompatActivity,它在onCreateView()方法中调用Fragment类,虽然您的代码没有实现onCreateView()但AppCompatActivity实现了。您可以阅读源代码here
解决方案有两种可能的解决方案
1-将清单中的sdk版本更改为&gt; = 11
2-(如果你使用11以下的API)使用SuppressLint注释来抑制与sdkVersion相关的任何错误并实现onCreateView,如下所示
@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;
}
答案 4 :(得分:0)
从manifest.xml更改你的minsdkversion
<uses-sdk
android:minSdkVersion="11"/>
答案 5 :(得分:0)
我遇到了同样的问题,我通过更改活动的超类解决了这个问题。 “公共类MainActivity扩展了AppCompatActivity”, 我输入了“公共类MainActivity extends Activity”。 更改后问题得到解决。
答案 6 :(得分:0)
如果您正在使用Eclipse,请右键单击其中一个项目并单击属性,从左侧列表中选择Java Compiler,取消选中“启用项目特定设置”,单击“配置工作区设置”链接,将“编译器合规性级别”更改为最高版本(现在是1.8)。 然后单击确定并接受它询问的所有内容。
另外,为确保将所有项目的Project Build Target api更改为最新的api。
编辑: 我个人不得不逐个取消选中所有库项目的“启用项目特定设置”。将编译器合规性工作空间级别更改为1.8,然后仅为我自己的主项目选中“启用项目特定设置”,并将其编译器合规性级别更改为1.6。