web-dev-qa-db-fra.com

Impossible d'accéder à ActivityCompatApi23 lors d'une tentative d'utilisation de FragmentActivity

J'essaie d'utiliser un ViewPager sur ma smartwatch, mais j'obtiens une erreur en essayant de reconstruire/exécuter/déboguer mon application. J'utilise FragmentActivity, c'est là que l'erreur se produit. J'ai effectué une recherche sur les sites stackoverflow et sur les tutoriels pour voir quel pourrait être le problème, et de nombreux résultats sont liés aux fichiers build.gradle. Cependant, j'ai essayé à peu près tout ce que je suis tombé sur, mais l'erreur n'a pas changé une fois.

L'erreur:

Error: Cannot acces ActivityCompatApi23

L'erreur se produit sur cette ligne, provenant du morceau de code ci-dessous.

public class WearMainActivity extends FragmentActivity {

WearMainActivity.Java

package be.ehb.dt.finalwork_lievenluyckx_v001;

import Android.os.Bundle;
import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentActivity;
import Android.support.v4.view.PagerAdapter;
import Android.support.v4.view.ViewPager;

import Java.util.List;
import Java.util.Vector;

/**
 * Created by Lieven on 14/08/17.
 */

public class WearMainActivity extends FragmentActivity {


    private PagerAdapter pagerAdapter;

    /* (non-Javadoc)
      * @see Android.support.v4.app.FragmentActivity#onCreate(Android.os.Bundle)
      */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.viewpager);
        //initialsie the pager
        initialisePaging();
    }

    /**
     * Initialise the fragments to be paged
     */
    private void initialisePaging() {

        List<Fragment> fragments = new Vector<Fragment>();
        fragments.add(Fragment.instantiate(this, Monitor.class.getName()));
        fragments.add(Fragment.instantiate(this, CurrentSongOverviewWear.class.getName()));
        this.pagerAdapter  = new MyPagerAdapter(getSupportFragmentManager(), fragments);

        ViewPager pager = (ViewPager) findViewById(R.id.viewpager_container);
        pager.setAdapter(this.pagerAdapter);
    }
}

build.gradle (WEAR)

apply plugin: 'com.Android.application'

Android {
    allprojects {
        repositories {
            jcenter()
            maven {
                url "https://maven.google.com"
            }
        }
    }

    compileSdkVersion 25
    buildToolsVersion "25.0.1"
    defaultConfig {
        applicationId "be.ehb.dt.finalwork_lievenluyckx_v001"
        minSdkVersion 25
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    compile 'com.Android.support:wear:26.0.0'
    compile 'com.Android.support:appcompat-v7:25.1.1'
    compile 'com.google.Android.support:wearable:2.0.3'
    compile 'com.google.Android.gms:play-services:11.0.4'
    provided 'com.google.Android.wearable:wearable:2.0.3'
    compile 'com.Android.support:support-v4:26.0.0-alpha1'
}
6
Lieven Luyckx

Après l'explication d'Eugen Pechanec (comme commentaire sous le message d'origine), le problème a été résolu pour moi:

Toutes les bibliothèques de support doivent avoir la même version. Si votre SDK de compilation est 25, c'est 25.4.0. Si votre SDK de compilation est 26, c'est 26.0.1. Ne mélangez pas leur.

4
Lieven Luyckx

Je viens de rencontrer un problème similaire lors de l'utilisation de AppCompatActivity:

erreur: impossible d'accéder à ActivityCompatApi23

J'ai corrigé en définissant une version spécifique de la bibliothèque de support:

compile 'com.Android.support:appcompat-v7:26.+' <-- Old
compile 'com.Android.support:appcompat-v7:26.0.2' <-- New
5
Tanner Perrien

Mon problème était des versions conflictuelles de la bibliothèque de support importée. L'un de mes projets de sous-modules faisait référence à une ancienne version de la bibliothèque de support. Leur mise à jour pour correspondre au problème résolu. Vous pouvez vérifier vos dépendances en utilisant la commande gradle:

gradlew -p [YOUR_MODULE] dependencies

[YOUR_MODULE] est le nom de votre module principal

1
TheIT