Android studio的AppcompatActivity错误

在使用Android studio构建Android应用程序时出现此错误:

24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to find class referenced in signature (Landroid/os/PersistableBundle;) 08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 I/dalvikvm﹕ Could not find method android.support.v7.app.AppCompatActivity.onCreate, referenced from method com.mkapp.apps.demo1.TourActivity.onCreate 08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 8393: Landroid/support/v7/app/AppCompatActivity;.onCreate (Landroid/os/Bundle;Landroid/os/PersistableBundle;)V 08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000 

我的依赖:

  compile 'com.android.support:support-v4:22.2.1' compile 'com.google.android.gms:play-services:7.3.0' compile 'com.android.support:appcompat-v7:22.1.0+' compile 'com.android.support:multidex:1.0.1' 

非常感谢您的帮助

从AppcompatActivityinheritance的旧活动可以正常工作。 但如果我创建新的,它会得到错误。 这是我的gradle.build:

 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.0" defaultConfig { applicationId "com.mkapp.apps.demo1" minSdkVersion 10 targetSdkVersion 22 compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } multiDexEnabled true } dexOptions { incremental true javaMaxHeapSize "4g" } packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } lintOptions { checkReleaseBuilds false // Or, if you prefer, you can continue to check for errors in release builds, // but continue the build even when errors are found: abortOnError false } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } dependencies { compile project(':photocollage') compile project(':gWFacebookSDK') // compile project(':listViewAnimation') compile 'com.google.android.gms:play-services:7.3.0' compile 'com.android.support:appcompat-v7:22.1.0' compile 'com.android.support:multidex:1.0.1' compile files('libs/aws-android-sdk-2.1.0-core.jar') compile files('libs/aws-android-sdk-2.1.0-sns.jar') compile files('libs/dexmaker-1.1.jar') compile files('libs/dexmaker-mockito-1.1-custom.jar') // compile files('libs/listviewanimations_lib-core_3.1.0.jar') compile files('libs/signpost-commonshttp4-1.2.1.1.jar') compile files('libs/signpost-core-1.2.1.1.jar') compile files('libs/signpost-jetty6-1.2.1.1.jar') compile files('libs/twitter4j-core-4.0.1.jar') compile files('libs/universal-image-loader-1.9.3.jar') } 

Related of "Android studio的AppcompatActivity错误"

您遇到此问题是因为您尝试使用onCreate(Bundle savedInstanceState,PersistableBundle persistentState) ,但此方法仅适用于API级别21。

我能够在Android 4.4上重现此示例代码的问题:

 public class TourActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState, new PersistableBundle()); } @Override public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); } } 

并且解决了每次出现PersistableBundle

 public class TourActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } } 

检查您在TourActivity使用PersistableBundleTourActivity并将其删除或使用您的活动代码更新您的答案。

在build.gradle中将支持库更新为23 ,将compileSdkVersion23

 compileSdkVersion 23 ... compile 'com.android.support:support-v4:23.0.0' compile 'com.android.support:appcompat-v7:23.0.0' 

然后使用gradle文件同步项目。

此外,Google Play服务现在为7.8.0

问题是您的TourActivity正在使用仅来自API级别21 PersistableBundle的类 。 这里的问题是为什么这样做。

请记住,您的新活动也必须从AppCompatActivityinheritance。

快速问题,你public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)在问题活动中重写了public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) ? 如果你这样做,你可能正在保存对PersistableBundle的引用,这在设备/模拟器中是不可用的。 如果您没有在那里做任何事情,请尝试删除它或评论它尝试…

首先,将库更新到最新版本。 接下来,清理并重建您的项目。

此外,如果这是您包含的库的完整列表:

  compile 'com.android.support:support-v4:22.2.1' compile 'com.google.android.gms:play-services:7.3.0' compile 'com.android.support:appcompat-v7:22.1.0+' compile 'com.android.support:multidex:1.0.1' 

那么你实际上不需要包含这个

  compile 'com.android.support:multidex:1.0.1' 

这是一个俗气的解决方案,但它实际上对我有用! 我手动创建了丢失库所需的路径:

  C:\Users\spomerleau\AppData\Local\Android\Sdk\extras\android\support\v7\appcompat\libs 

并从此处和此处添加了两个缺少的.jar文件。 Android studio终于find了执行Java所需的依赖项。

简单地说, 转到 文件 – >使缓存无效并重新启动。 谢谢

1.只需将你的依赖项更改为build.gradle中的 –

 dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') testImplementation 'junit:junit:4.12' implementation 'com.android.support:support-v4:23.4.0' implementation 'com.android.support:appcompat-v7:23.4.0' implementation 'com.android.support:support-annotations:27.1.1' } 

2.然后它将显示同步gradle,然后同步build.gradle以更新更改。

我有这样的错误,如果你想解决,你必须改变这样

 compileSdkVersion 22 

 compile 'com.android.support:appcompat-v7:22.0.0' 

您需要像这样更改您的app build.gradle

 compile 'com.android.support:appcompat-v7:22.1.0+' 

 compile 'com.android.support:appcompat-v7:20.0.0'