Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AppcompatActivity Error with Android studio

I'm getting this error when building android application with Android studio :

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

my dependencies :

    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'

many thanks for your help

old activities which inherit from AppcompatActivity work fine. but if I create new one ,it get the error . here is my 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')
}
like image 660
Linh Nguyen Avatar asked Aug 20 '15 04:08

Linh Nguyen


People also ask

What is the use of AppCompatActivity in Android?

Stay organized with collections Save and categorize content based on your preferences. Base class for activities that wish to use some of the newer platform features on older Android devices.

Why do we extend AppCompatActivity in Android?

AppCompatActivity enables many of the backwards compatibility features in a transparent manner. For example, implements Material Design views and features not available in 4.0. So, it's still a good practice to use it.

What is difference between AppCompatActivity and activity?

Activity is the basic one. Based on Activity , FragmentActivity provides the ability to use Fragment . Based on FragmentActivity , AppCompatActivity provides features to ActionBar .


2 Answers

You have this issue because you are trying to use onCreate (Bundle savedInstanceState, PersistableBundle persistentState), but this method is available only from API level 21.

I am able to reproduce the issue with this sample code on 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);
    }
}

And the issue is resolved removing every occurrence of PersistableBundle:

public class TourActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

Check where you use PersistableBundle in your TourActivity and remove it or update your answer with the code of your activity.

like image 200
Mattia Maestrini Avatar answered Sep 18 '22 15:09

Mattia Maestrini


Update your support library to 23 and your compileSdkVersion to 23 in build.gradle.

compileSdkVersion 23

...

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

Then sync your project with gradle files.

Also, Google Play Services is now 7.8.0

like image 29
Jared Rummler Avatar answered Sep 20 '22 15:09

Jared Rummler