IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Problème appel d'une activité d'un autre projet


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Par défaut Problème appel d'une activité d'un autre projet
    Bonsoir,

    Je débute sous Android et je souhaites faire appel à une activité d'un projet à partir d'une activité d'un autre projet mais j'ai une erreur du type : ActivityNotFoundException


    J'ai deux projets dans mon repertoire AndroidStudioProjects:
    - AppelCalculSomme contenant l'activité AppelCalculSommeActivity (activité appelante)
    - Calculatrice contenant l'activité CalculatriceActivity (activité appelée)

    Voici le code pour le projet AppelCalculSomme :

    AppelCalculSommeActivity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    package df.cours5;
     
    import java.util.ArrayList;
     
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.TextView;
     
    public class AppelCalculSommeActivity extends Activity {
      private static final int REQUEST_CODE = 999;
      private EditText parametre  ;
      private TextView resultat  ;
      private ArrayList<Integer> entiers;
     
     
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        parametre = (EditText)findViewById(R.id.parametre);
        resultat = (TextView)findViewById(R.id.resultat);
        entiers = new ArrayList<Integer>();
      }
     
      public void onClickAjouter(View view) {
        int entier;
        try {
          entier = Integer.parseInt(parametre.getText().toString());
        } catch (Exception e) {
          return;
        }
        entiers.add(entier);
        if (entiers.size()==1)
          resultat.setText(entier+" ");
        else
          resultat.append("+ "+entier+" ");
       }
     
      public void onClickSommer(View view) {
        Intent intention = new Intent("Calculatrice.intent.action.Launch");
        intention.putExtra("liste", entiers);
        intention.putExtra("operation", "+");
        startActivityForResult(intention, REQUEST_CODE);
      }
     
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultCode == RESULT_OK && requestCode == REQUEST_CODE && data.hasExtra("result")) {
          Bundle extras = data.getExtras();
          int res = extras.getInt("result", 0);
          System.out.println(res);
          resultat.setText(res+" ");
        }
      }
     
      public void onClickEffacer(View view) {
        parametre.setText("");
        resultat.setText("");
        entiers = new ArrayList<Integer>();
      }
    }
    manifest.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="df.cours5"
    android:versionCode="1"
    android:versionName="1.0" >
     
    <uses-sdk android:minSdkVersion="15" />
     
    <application
        android:icon="@drawable/upjv_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".AppelCalculSommeActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    </manifest>

    main.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
     
        <EditText
            android:id="@+id/parametre"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:text="parametre entier à ajouter" />
     
        <Button
            android:id="@+id/ajouter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:onClick="onClickAjouter"
            android:text="ajouter" />
     
        <Button
            android:id="@+id/sommer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:onClick="onClickSommer"
            android:text="sommer" />
     
        <Button
            android:id="@+id/effacer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:onClick="onClickEffacer"
            android:text="effacer" />
     
        <TextView
            android:id="@+id/resultat"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Resultat" />
    </LinearLayout>
    Et le code du projet Calculatrice :

    CalculatriceActivity
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    package df.cours6;
     
    import java.util.ArrayList;
     
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
     
     
    public class CalculatriceActivity extends Activity {
      private static final int PLUS=1, MOINS=2, MULT=3, DIV=4;
     
      public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        if (getIntent().hasExtra("liste") && getIntent().hasExtra("operation")) {
          ArrayList<Integer> entiers = getIntent().getIntegerArrayListExtra("liste");
          String operation = getIntent().getStringExtra("operation");
          int op = 0;
          if (operation.equals("+"))
            op = PLUS;
          else if (operation.equals("-"))
            op = MOINS;
          else if (operation.equals("*"))
            op = MULT;
          else if (operation.equals("/"))
            op = DIV;
          if ((op != 0) && (entiers.size() > 0)) {
            int result = entiers.get(0);
            int nbre = entiers.size();
            for (int i = 1; i < nbre; ++i) 
              result = (op==PLUS?result+entiers.get(i):
                (op==MOINS?result-entiers.get(i):
                  (op==MULT?result*entiers.get(i):result/entiers.get(i))));
            Intent intentionResult = new Intent();
            intentionResult.putExtra("result", result);
            setResult(RESULT_OK, intentionResult);
            this.finish();
          }
        }
        setResult(RESULT_CANCELED, null);
        this.finish();
      }
    }
    manifest.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="df.cours6"
        android:versionCode="1"
        android:versionName="1.0" >
     
        <uses-sdk android:minSdkVersion="15" />
     
        <application
            android:icon="@drawable/upjv_launcher"
            android:label="@string/app_name" >
            <activity
                android:name=".CalculatriceActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="Calculatrice.intent.action.Launch" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>
        </application>
    </manifest>
    main.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
     
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/hello" />
    </LinearLayout>
    Quelqu'un a une solution à me proposer

    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 149
    Par défaut
    Pourquoi 2 projets ? tu ne peux pas simplement mettre les 2 class dans le même ?

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Tu fais appel à Calculatrice mais ton projet ne connais pas cette classe puisque c'est un tout autre projet.

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Intent intention = new Intent("Calculatrice.intent.action.Launch");
    ne peut pas fonctionner

    Il faut donc lui spécifier le package complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.setComponent(new ComponentName("com.package.exemple","com.package.exemple.CalculatriceActivity"));
    startActivity(intent);
    Il te faudra modifier com.package.exemple en fonction du package de l'activity que tu veux appeler.

    Tu peux également consulter cette partie de la doc : http://developer.android.com/trainin...nts/index.html
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Par défaut
    Bonjour,

    Merci de votre réponse.
    Bizarrement, j'ai relancé Android Studio et ça fonctionne !

    @Nhi80 : Effectivement il est plus simple de mettre les deux activités dans le même projet mais le but de l'exercice était de le faire séparément.

    @grunk : Merci beaucoup, ta solution fonctionne également en effectuant les modifications suivantes:

    AppelSommeActivity:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      public void onClickSommer(View view) {
        
        Intent intention = new Intent(Intent.ACTION_MAIN);
        intention.setComponent(new ComponentName("df.cours6","df.cours6.CalculatriceActivity"));
    
        intention.putExtra("liste", entiers);
        intention.putExtra("operation", "+");
        startActivityForResult(intention, REQUEST_CODE);
      }

    Et le manifest.xml du projet Calculatrice:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="df.cours6"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk android:minSdkVersion="15" />
    
        <application
            android:icon="@drawable/upjv_launcher"
            android:label="@string/app_name" >
            <activity
                android:name=".CalculatriceActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="Calculatrice.intent.action.MAIN" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    Merci à vous problème résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appeler une activité d'un autre projet
    Par marooh dans le forum Android
    Réponses: 2
    Dernier message: 03/06/2013, 19h24
  2. Réponses: 4
    Dernier message: 28/09/2009, 10h07
  3. [POO] appel d'une méthode d'un autre fichier, le tout objet
    Par aaaaaaaa dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/07/2007, 18h43
  4. appel d'une variable d'un autre fichier
    Par jmbonnaz dans le forum MATLAB
    Réponses: 1
    Dernier message: 18/04/2007, 11h08
  5. [VBA-A]Appel d'une procédure d'un autre projet!
    Par TiT0f dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/06/2006, 09h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo