3 votes

Saveurs du produit Android sdk - activité introuvable lorsque je démarre une nouvelle activité en utilisant l'intention

J'ai une application qui fonctionne et à laquelle j'ai ajouté deux saveurs de produits. T

Voici le fichier AndroidManifest.xml :

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name="com.alpha.aloedu.MainActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.alpha.aloedu.guideddrawing.GuidedLetterDrawingActivity"
        android:label="Guided Letter Drawing"
        android:screenOrientation="portrait" />
    <activity
        android:name="com.alpha.aloedu.buildvocabulary.BuildVocabularyActivity"
        android:label="Image Plus Word"
        android:screenOrientation="portrait" />
    <activity
        android:name="com.alpha.aloedu.findthepicture.FindThePictureActivity"
        android:label="Find the Picture"
        android:screenOrientation="portrait" />
    <activity
        android:name="com.alpha.aloedu.findtheletter.FindTheLetterActivity"
        android:label="Find the Letter"
        android:screenOrientation="portrait" />
    <activity
        android:name="com.alpha.aloedu.fillintheletter.FillInTheLetterActivity"
        android:label="Find the Letter"
        android:screenOrientation="portrait" />
    <activity
        android:name="com.alpha.aloedu.EndActivity"
        android:label="End Activity"
        android:screenOrientation="portrait" />

    <activity
        android:name="com.alpha.aloedu.AdminActivity"
        android:label="Admin Activity"
        android:theme="@style/AppTheme.NoActionBar"
        android:screenOrientation="portrait"
        />

</application>

<supports-screens
    android:largeScreens="true"
    android:normalScreens="true"
    android:requiresSmallestWidthDp="480"
    android:resizeable="false"
    android:smallScreens="false"
    android:xlargeScreens="true" />

Voici la partie pertinente du fichier gradle :

productFlavors {
    de {
        applicationIdSuffix ".de"
        versionName "1.1de"
    }
    fr {
        applicationIdSuffix ".fr"
        versionName "1.1fr"
    }
}

Voici l'arbre source :

enter image description here

Voici le code où je charge l'activité suivante :

    Intent intent = new Intent();
    intent.setClassName("com.alpha.aloedu", newClassName);
    currentActivity.startActivity(intent);
    currentActivity.finish();

J'ai placé un point d'arrêt sur la deuxième ligne et "newClassName" a la valeur correcte. Cependant, lorsque j'exécute la variante "deDebug", j'obtiens une erreur sur la troisième ligne :

Android.content.ActivityNotFoundException : Impossible de trouver la classe d'activité explicite {com.alpha.aloedu/com.alpha.aloedu.guideddrawing.GuidedLetterDrawingActivity} ; Avez-vous déclaré cette activité dans votre AndroidManifest.xml ?

La classe GuidedLetterDrawingActivity existe bien dans l'arbre source principal, ainsi que dans AndroidManifest.xml.

Merci de toute l'aide que vous pourrez m'apporter.

0voto

Fartab Points 762

Vous devez déclarer les activités de chaque saveur dans son fichier manifeste.
... \src\ de \AndroidManifest.xml
... \src\ fr \AndroidManifest.xml

0voto

Déclarez chaque nouvelle activité dans le manifeste. Même si vous changez le nom, vous devez modifier le fichier du manifeste.

     <application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".new_Activity"
        android:label="@string/app_name"/>

    <activity
        android:name=".new_Activity2"
        android:label="@string/app_name"/>
    </application>

Ceci doit être déclaré dans le fichier java principal.

    Intent intent = new Intent(MainActivity.this, newActivity.class);
        startActivity(intent);

    Intent intent1 = new Intent(MainActivity.this, newActivity2.class);
        startActivity(intent1);

exécuter le bloc de code intentionnel selon vos besoins dans la même fonction ou dans des fonctions différentes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X