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 :

Ajouter fichier java dans le manifest


Sujet :

Android

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Ajouter fichier java dans le manifest
    Bonjour,

    Ma demande peut paraitre stupide, mais j'ai pas mal cherché et tout ce que j'essaie ne marche pas.
    Voila mon probleme si bete soit i l :

    Je suis en train de développer une petite application, je cherche a utiliser un fichier .java contenant une classe, ce n'est pas une activity (j'entends par là que c'est une juste une classe qui est utiliser dans un autre fichier par la suite), or le programme plante au démarrage, je pense donc qu'il faut déclarer ce fichier dans le manifest, j'ai pas mal skouatter cette page, mais tout ce que j'essaie ne marche pas,

    Pouvez vous m'aider ?

    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Juin 2010
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : Juin 2010
    Messages : 317
    Points : 626
    Points
    626
    Par défaut
    Salut,

    Le LogCat te dit quoi sur l'origine de l'erreur ?

    Peut être que tu as mal instancié ton objet ?

    John.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    C'est une erreur exceptionnelle, l'application se ferme, grosso modo j'ai deux activity un affichage de type Menu, et un affichage Option, la classe dont je parle travaille avec Option. Dans ce fichier ma classe herite de Activity peut etre le probleme vient de là ? Ou d'appelle de methode ?

    En fait cette classe lis et ecris dans des fichiers datas, a leur lecture j'utilise des try et des catch pour gerer les erreurs, et ces erreurs sont censé aaffiché un message "Toast" serait il possible que cela vienne de là ?

    Un bout de mon code pr donner une idée :

    Ma classe "Message" dans le fichier Message.java :

    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
    67
     
    package My.Projet5;
     
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;
     
    import android.app.Activity;
    import android.app.Notification;
    import android.content.Context;
    import android.os.Bundle;
    import android.telephony.gsm.SmsManager;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.net.wifi.WifiInfo;
    import android.net.wifi.WifiManager;
     
     
    @SuppressWarnings("deprecation")
    class Message extends Activity 
    {
        /** Called when the activity is first created. */
     
        public String monMessage;
    	public String monNumero;
    	public String monWifi;
     
        public Message()
    	{
    		this.monMessage=null;
    		this.monNumero=null;
    		this.monWifi=null;
    	}
    	/** Constructeur à 3 paramètres : message + numero + wifi */
    	public Message(String unMessage, String unNumero, String unWifi)
    	{
    		this.monMessage=unMessage;
    		this.monNumero=unNumero;
    		this.monWifi=unWifi;
    	}
        public void initMonMessage()
    	{
    		try
    		{
    			//Nom du fichier data
    			String fichierMessage = "Text_file.dat";
    			FileInputStream fIn = null;
    			InputStreamReader isr = null;
     
    			char[] inputBuffer = new char[50];
     
    			fIn = openFileInput(fichierMessage);      
    			isr = new InputStreamReader(fIn);
    			isr.read(inputBuffer);
    			this.monMessage = new String(inputBuffer);
    		}
    		catch (Exception e) 
    		{   
    			//affiche l'erreur dans un popup
    			Toast.makeText(getBaseContext(), "Pas de Texte enregistré",Toast.LENGTH_SHORT).show();
    		}
    	}
    }
    Et donc l'objet message est crée et initialisé dans Option.java, est une vraie activity j'entends par là que ya une page de bouton etc correspodant, je declare donc mon objet message avec les boutons en utilisant le constructeur par defaut, et je l'initialise dans la methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void onCreate(Bundle savedInstanceState)

    Hmm j'espere etres claire : /
    Comme Message herite de activity je pensais que c'etait qqch a declarer dans le manifeste ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Juin 2010
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : Juin 2010
    Messages : 317
    Points : 626
    Points
    626
    Par défaut
    Effectivement, si ta classe hérite de Activity, il faut la déclarer dans le manifeste, juste après la balise fermant de l'activité "Main", qui est </activity>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <activity android:name=".nom_de_ta_classe" />
    Tu mets bien le point devant le nom de ta classe donc ".Message" sans l'extension .java.

    Si tu te sert de cette classe pour uniquement utiliser des méthodes, recrée la et vire l'héritage de activity, du coup il n'y a pas besoin de la mettre dans le manifeste.

    Petite question, il n'y a aucun affichage graphique sur cette classe ?

    John.

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    En fait non il n'y aucun affichage graphique de cette classe, si je l'ai fait hérité de Activity c'est parce que j'avais des erreurs ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fIn = openFileInput(fichierMessage);      
    			isr = new InputStreamReader(fIn);
    et ici (dans le toast du catch)
    de mémoire

  6. #6
    Membre confirmé
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Juin 2010
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : Juin 2010
    Messages : 317
    Points : 626
    Points
    626
    Par défaut
    Peut être qu'il y a une autre façon d'arriver a faire cela sans pour autant passer par Activity.

    Enfin bon, si ça ne marche toujours pas en l'ajoutant dans le manifeste, montre ton contenu du manifeste.

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Nooon ça ne marche pas : /

    voici mon manifeste :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="My.Projet5"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="10" />
        <uses-feature android:name="android.hardware.wifi" />
    	<uses-permission android:name="android.permission.SEND_SMS"/>
    	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    	<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <application android:icon="@drawable/wifi" android:label="@string/app_name">
     
            <activity android:name=".Main"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity android:name=".Option"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                </intent-filter>
            </activity>
            <activity android:name=".Message" />
        </application>
    </manifest>
    Je tiens a te remercier pour ton aide

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Je debute pas mal en prog JAVA et android donc mon code se compose pas mal de tuto trouvé par ci par là et de choses lus sur les API donc ça m'etonnerai pas du tout qu'il y ait des abérations :/

  9. #9
    Membre confirmé
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Juin 2010
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : Juin 2010
    Messages : 317
    Points : 626
    Points
    626
    Par défaut
    Le problème, a mon avis, c'est ton constructeur public Message. Si il hérite d'activity il lui faudrait réellement un constructeur onCreate(Bundle savedInstanceState), comme toute activity. Je pense que c'est normal que ça plante.

    Si tu tiens réellement a garder cette logique (ça serai pas propre du tout), je pense qu'il faudrait que tu créés justement le constructeur onCreate(Bundle savedInstanceState), que tu lui fasses une interface et à ce moment la tu vas pouvoir utiliser ses méthodes.

    Test déjà de créer le constructeur comme ça, si ça plante pas je te dirais comment passer les méthodes d'une activity a une autre.

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    et du coup mes constructeurs actuel je les mets juste dans oncreatebundle ?

    Edit :

    Hmm ça me genere pas mal d'erreurs vis a vis des void, il serait en effet plus propre de trouver comment lire/ ecrire dans les fichiers data et de faire les toasts sans Activity en effet mais je pense pas que ce soit possible pour les toast.

    Bon ben je vais me documenter sur cela alors, je pensais pas que ce serait si compliqué : /

  11. #11
    Membre confirmé
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Juin 2010
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : Juin 2010
    Messages : 317
    Points : 626
    Points
    626
    Par défaut
    Tes constructeurs deviennent donc des setters.

    Mais bon oui, ça serait mieux de faire comme tu dis, plutôt que de passer par une activity.

    Mais ça je pense pas pouvoir t'aider désolé ^^.

  12. #12
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Je pense que je devrais bien trouver de la doc sur quelque chose d'aussi basic qu'une lecture/ecriture de ficheir et les Toast :p

    Sinon ce serait vraiment le drame

    Ben merci de ton aide en tout cas !

  13. #13
    Membre confirmé
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Juin 2010
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : Juin 2010
    Messages : 317
    Points : 626
    Points
    626
    Par défaut
    De rien.

    Oui ça doit être facile de trouver ça ^^.

    Bon code .

  14. #14
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il y a une regle simple en POO:

    L'héritage est la relation la PLUS FORTE entre deux classes... Dans notre cas présent elle dit que tous les objets "Message" sont des "Activity".

    Une "Activity" c'est une page d'application dans android... Donc un "Message" est une page d'application qui peut être instanciée par android directement (par le biais des Intent). C'est pas le cas ? (Message instancié par une autre activé) => PAS D'HERITAGE...

    Si tu as besoin d'un Context pour tes objets, passes le en paramètre aux constructeurs ou par un "setContext", ou en parametres aux fonctions qui l'utilisent (par exemple le "init....").
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  15. #15
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Ou plus simple ne pas utiliser getBaseContext() mais getApplicationContext() .

    Pas la peine de trimbaler partout votre context si vous n'en avez pas grande utilité .

    Google à spécifié qu'il fallait utiliser le moins possible getBaseContext().
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

Discussions similaires

  1. [AC-2007] ajout fichier.txt dans la base de données
    Par andy331 dans le forum VBA Access
    Réponses: 5
    Dernier message: 02/02/2010, 17h35
  2. Réponses: 1
    Dernier message: 16/01/2007, 15h39
  3. Ajout de texte dans un fichier
    Par willowII dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 24/08/2004, 19h30
  4. [MFC] Ajout des fichiers récents dans un menu
    Par Choupinou dans le forum MFC
    Réponses: 3
    Dernier message: 20/08/2004, 16h47
  5. Comment generer un fichier war dans java
    Par relivio dans le forum ANT
    Réponses: 4
    Dernier message: 12/03/2004, 13h43

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