Aller au contenu

Problème HelloWorld


psychopathe

Recommended Posts

Salut à tous,

Je tente de modifier mon HelloWorld pour me perfectionner mias je rencontre une erreur... Pourtant Eclipse ne m'en indique aucune!

Voici mes codes :

=> HelloWorld.java

package com.aurelien.android.helloworld;

import android.app.Activity;
import android.os.Bundle;

public class HelloWorld extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
   }
}

=> strings.xml

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

HelloWorld !
HelloWorld

=> colors.xml

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

#fff

=> dimensions.xml

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

20px

=> main.xml

<?xml version="1.0" encoding="utf-8"?>
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center_vertical|center_horizontal"
   android:orientation="vertical">

       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       android:src="@drawable/logo"
       />

       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       android:text="@string/hello"
       android:textColor="@color/white"
       android:textSize="@dimen/dim_hello" />

=> Erreur : http://img30.imageshack.us/img30/4164/sanstitrenof.png

Merci d'avance pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

tu les a fait à ma main tes XML de layout ?

parce que tu n 'as pas d'ID sur tes contrôles

comme : android:id="@+id/bidule"

Ca ne sert à rien si son code ne réutilise pas cette référence (et apparemment, le code java fourni n'y fais pas référence).

Par contre, le seul que je vois à chaud, concerne ton fichier main.xml remplace imageView par ImageView et textView par TextView.

Aussi, vérifie que ton fichier Manifest.xml pointe bien sur le nom de ton package et le bon nom de ta classe.

Si tu es sous eclipse, dans les différentes vues (show view) tu as DDMS et dans cette vue un onglet LogCat qui te donnera exactement l'exception généré au lancement de ton programme. Si tu ne comprends le message tu peux le copier ici je regarderais.

Arnaud

Lien vers le commentaire
Partager sur d’autres sites

j'ai corrigé le fichier main.xml, pour ce qui est du fichier Manifest.xml je ne vois rien de particulié...

<?xml version="1.0" encoding="utf-8"?>
     package="com.aurelien.android.helloworld"
     android:versionCode="1"
     android:versionName="1.0">

                 android:label="@string/app_name">







Pour ce qui est des différentes vues, DDMS... je ne vois pas où c'est :s

Merci

Lien vers le commentaire
Partager sur d’autres sites

j'ai corrigé le fichier main.xml, pour ce qui est du fichier Manifest.xml je ne vois rien de particulié...

<?xml version="1.0" encoding="utf-8"?>
     package="com.aurelien.android.helloworld"
     android:versionCode="1"
     android:versionName="1.0">

                 android:label="@string/app_name">







Pour ce qui est des différentes vues, DDMS... je ne vois pas où c'est :s

Merci

Ajout un point dans l'attribut android:name

android:name="HelloWorld"

par

android:name=".HelloWorld"

Pour ddms: windows/open perspective/ddms si ddms n'est pas ouvert, cliques sur Other afin de le selectionner.

Lien vers le commentaire
Partager sur d’autres sites

Nan mais j'ai plus simple :

efface tout et fais New android project. tout est construit.

Après edite tes fenêtres en visuel et quand tu sera capable d'avoir un hello world qui tourne....bein tu feras le malin à le faire à la main.

Parce que là eclipse dans l editeur de manifest te mets un gros truc rouge sur ton HelloWorld où il manque le "." au début !!

Bon j'ai l'air méchant là mais c'est pour ton bien ..... te te casse les dents là où il n'y a pas à se casser les dents. Et tu rique d'abandonner bêtement pour des histoires d'accents, de points, de majuscules.

Truc bête : vu que tu as tes fichiers à la main : tu as bien une icône icon.png dans le répertoire res/drawable ?

Lien vers le commentaire
Partager sur d’autres sites

Nan mais j'ai plus simple :

efface tout et fais New android project. tout est construit.

Après edite tes fenêtres en visuel et quand tu sera capable d'avoir un hello world qui tourne....bein tu feras le malin à le faire à la main.

Parce que là eclipse dans l editeur de manifest te mets un gros truc rouge sur ton HelloWorld où il manque le "." au début !!

Bon j'ai l'air méchant là mais c'est pour ton bien ..... te te casse les dents là où il n'y a pas à se casser les dents. Et tu rique d'abandonner bêtement pour des histoires d'accents, de points, de majuscules.

Truc bête : vu que tu as tes fichiers à la main : tu as bien une icône icon.png dans le répertoire res/drawable ?

Je ne suis pas tout à fait d'accord...c'est bien de comprendre ce que fait le développeur

Sinon la piste de l'icône est fausse:ça ne fait planter que la compilation pas le prof l'apk n'étant pas génère.

Lien vers le commentaire
Partager sur d’autres sites

Je ne suis pas tout à fait d'accord...c'est bien de comprendre ce que fait le développeur

A condition qu'il comprenne lui même ce qu'il fait :lol:

Bon je suis méchant :|

Mais quand même...faire le squelette compilable et exécutable avec eclipse c'est mieux.

Partir de zéro c'est lourd. Par contre après une fois le squelette qui tourne tu peux modifier à la main.

Lien vers le commentaire
Partager sur d’autres sites

Ton erreur vient du fait que tes views sont écrites sans majuscules dans ton layout, il faut bien faire attention aux noms

Donc : LinearLayout, TextView et ImageView

Ce qui donne pour ton main.xml :

<?xml version="1.0" encoding="utf-8"?>
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center_vertical|center_horizontal"
   android:orientation="vertical">

       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       android:src="@drawable/logo"
       />

       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       android:text="@string/hello"
       android:textColor="@color/white"
       android:textSize="@dimen/dim_hello" />

Avec ce code tu ne devrais plus avoir de soucis ;)

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous,

Merci pour vos nombreuses réponses!

Alors pour ce qui est de cette histoire de point, c'est moi qui la enlevé en relisant le code car je ne voyer pas son utiliter et du coup pour moi le nom du programme été faux... J'aimerais bien d'ailleur qu'on m'explique son utilité ;)

Sinon l'erreur venait bien des majuscules! Merci beaucoup pour votre aide, maintenant je le sais et ne referais plus jamais la même erreur!

Pour ce qui est de ma méthode, j'ai toujours fait comme ca lorsque je me lancais dans un sujet que je ne connaissais pas! Je commence doucement, je fait un petit programme (Là c'était un HelloWorld tous simple), et une fois qu'il marche je l'améliore rajoute des fonctions... Et dès que je rencontre un problème je demande de l'aide et surtout des explications à plus performant que moi, je corrige et comprend mon erreur et je continue, et comme ca je progresse très vite, et surtout je comprend tous ce que je fais!

Je profite de ce post pour vous poser une question : Que faire maintenant?

Je veux dire, vous, vous avez commencé par coder quelles petites applications?

Où avez vous appris?

J'attends vos témoignage :D

Merci

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous,

Merci pour vos nombreuses réponses!

Alors pour ce qui est de cette histoire de point, c'est moi qui la enlevé en relisant le code car je ne voyer pas son utiliter et du coup pour moi le nom du programme été faux... J'aimerais bien d'ailleur qu'on m'explique son utilité ;)

Sinon l'erreur venait bien des majuscules! Merci beaucoup pour votre aide, maintenant je le sais et ne referais plus jamais la même erreur!

Pour ce qui est de ma méthode, j'ai toujours fait comme ca lorsque je me lancais dans un sujet que je ne connaissais pas! Je commence doucement, je fait un petit programme (Là c'était un HelloWorld tous simple), et une fois qu'il marche je l'améliore rajoute des fonctions... Et dès que je rencontre un problème je demande de l'aide et surtout des explications à plus performant que moi, je corrige et comprend mon erreur et je continue, et comme ca je progresse très vite, et surtout je comprend tous ce que je fais!

Je profite de ce post pour vous poser une question : Que faire maintenant?

Je veux dire, vous, vous avez commencé par coder quelles petites applications?

Où avez vous appris?

J'attends vos témoignage :D

Merci

L'histoire du ".": en haut du fichier tu as définis le nom du package de ton application. Ainsi, dans android:name tu mets la classe avec son path relatif, ce qui donnera par la suite lors de l'appel com.monexample.helloworld.HelloWorld. Dans ton cas d'erreur, Android recherchait une classe HelloWorld (sans package donc), donc introuvable...Si tu veux appeler une classe d'un autre package depuis ton application com.example.helloworld, la valeur d'Android:name indiquera le path de la classe à laquelle tu souhaites accéder ex: com.example2.bonjourtoutlemonde.Bonjour.

Tu pourrais maintenant essayer de faire une application pour tester tous les composants widgets disponibles et notamment les listes (ListView, ListActivity, Spinner...) en accédant à des données statiques XML, puis une ressource distante (en jouant avec des threads) et une base de données que tu géreras de A à Z, et enfin l'accès aux données présente dans le contentprovider de l'application Contact.

Bon courage

Lien vers le commentaire
Partager sur d’autres sites

Tu pourrais maintenant essayer de faire une application pour tester tous les composants widgets disponibles et notamment les listes (ListView, ListActivity, Spinner...) en accédant à des données statiques XML, puis une ressource distante (en jouant avec des threads) et une base de données que tu géreras de A à Z, et enfin l'accès aux données présente dans le contentprovider de l'application Contact.

Bon courage

Oui, il faut commencer par là :D

Pour compléter en te donnant des exercices (et des exemples) tu peux commencer par lire les principaux composants d'Androïd, ça t'aidera à comprendre de quoi est constitué une application : http://developer.android.com/guide/topics/fundamentals.html

Ensuite tu peux te pencher sur les Views et Widgets l'a dit Arnouf en regardant les exemples de la doc Google : http://developer.android.com/guide/tutorials/views/index.html

Puis tu peux réaliser le tutorial un peu plus complet que propose Google (il s'agit de réaliser une application Notepad), il t'apprend pô mal de choses : http://developer.android.com/guide/tutorials/notepad/index.html

Bon développement !

Modifié par Fluckysan
Lien vers le commentaire
Partager sur d’autres sites

Tu pourrais maintenant essayer de faire une application pour tester tous les composants widgets disponibles et notamment les listes (ListView' date=' ListActivity, Spinner...) en accédant à des données statiques XML, puis une ressource distante (en jouant avec des threads) et une base de données que tu géreras de A à Z, et enfin l'accès aux données présente dans le contentprovider de l'application Contact.

Bon courage[/quote']

Oui, il faut commencer par là :D

Pour compléter en te donnant des exercices (et des exemples) tu peux commencer par lire les principaux composants d'Androïd, ça t'aidera à comprendre de quoi est constitué une application : http://developer.android.com/guide/topics/fundamentals.html

Ensuite tu peux te pencher sur les Views et Widgets l'a dit Arnouf en regardant les exemples de la doc Google : http://developer.android.com/guide/tutorials/views/index.html

Puis tu peux réaliser le tutorial un peu plus complet que propose Google (il s'agit de réaliser une application Notepad), il t'apprend pô mal de choses : http://developer.android.com/guide/tutorials/notepad/index.html

Bon développement !

Flucksan: ANDROID et non ANDROÏD...tu vas y arriver!!:rolleyes:

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Bon je progresse, j'avance... Mais je rencontre un petit problème, je sais maintenant creer des menu et des dialogues.

Mais je rencontre un problème pour coupler les deux, voilà j'essaye de faire un code assez simple : Un menu (News note, Quit) et j'aimerais que lorsqu'on selectionne "Quit" un AlertDialog s'affiche pour demander la confirmation puis si besoin ferme le programme.

Le problème qe je rencontre et le suivant : J'ai déclaré mon menu dans un fichier menu.xml, du coup je ne sais pas comment faire dans le code java pour indiquer que des qu'une option du menu est selectionner il faut faire telles ou telles choses. Il ne reconnait pas les ID de mon menu.

Peut etre que je suis obligé de déclarer mon menu dans le code java? D'ailleur faut il mieu le faire dans le java ou le xml?

Voilà mes codes :

=> test.java :

package com.aurelien.android.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;


public class test extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {    
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
   }

   public boolean onCreateOptionsMenu(Menu menu) {
       MenuInflater inflater = getMenuInflater();
       inflater.inflate(R.menu.menu, menu);
       return true;
   }

   public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()) {
       case quit:
           Dialog();
           return true;
       case news_note:
           return true;
       }
       return false;
   }

   protected Dialog onCreateDialog(int id) {
       AlertDialog.Builder builder = new AlertDialog.Builder(this);
       builder.setMessage("Are you sure you want to exit?");
       builder.setCancelable(false);
       builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int id) {
                       test.this.finish();
                  }
              })
              .setNegativeButton("No", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int id) {
                       dialog.cancel();
                  }
              });
       AlertDialog alert = builder.create();
       return alert;
   }
}

=> main.xml :

<?xml version="1.0" encoding="utf-8"?>
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
         android:id="@+id/my_text"
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:text="@string/hello"
     />
            android:id="@+id/my_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="I am a Button" 
         android:layout_gravity="center_horizontal" />

=> menu.xml :

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


         android:title="Quit" />  

Merci

Lien vers le commentaire
Partager sur d’autres sites

Surcharge la méthode onOptionsItemSelected de la classe Activity qui prend un menuItem en paramètre et ensuite tu testes l'id du menuItem

if (monMenuItem==R.id.example_submenu_item){

//lance une autre activity

}

Voilou

NB: que tu fasses ton menu via Inflater ou en Java comme le propose popolbox, le traitement de la selection d'un menu se fait de cette manière (quand c'est bien codé :D)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Hummm interressant, je m'y connais déjà beaucoup plus en C!

Pourrais tu m'indiquer la marche à suivre pour coder en C?

Merci

EDIT : J'avais pas vu ton message arnouf, mais je n'ai aps compris ce que tu voulais que je modifie dans mon code? Ou je place ce que tu m'as dit?

Modifié par psychopathe
Lien vers le commentaire
Partager sur d’autres sites

Dans ta class test tu fais quelque chose:

public boolean onOptionsItemSelected(MenuItem item){
if (item.getId()==R.id.mon_submenu_example){
  // je fais ce que je veux avec mes cheveux
}
return super.onOptionsItemSelected(item);
}

Ajoute ça et cela devrait marcher.

Pour faire du code en C: niet! Tu peux créer des librairies C/C++, les builder pour en faire des lib statique ou dynamique, et faire appel à des fonctions de ces libs. Tu ne developperas d'application pour cette plateforme (UI incluse) via le langage C.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ces expliquations!

J'ai un petit problème que je n'avais pas vu avant, dans mon code .java lorsque je déclare mon menu, mes "itemId" sont tous sous-lignés en rouge. Je ne peux donc pas compiler. De plus dans la fonction "onOptionsItemSelected" j'aimerais démarrer la fonction "Dialog", mais là aussi c'est sous-ligné.

(J'ai aussi apporter quelques modifs à mon code, donc je le re-post)

=> test.java

package com.aurelien.android.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;

public class test extends Activity {

   @Override
   public void onCreate(Bundle savedInstanceState) {
       Button myButton = (Button) findViewById(R.id.my_button);
       TextView myText = (TextView) findViewById(R.id.my_text);

       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
   }

   public boolean onCreateOptionsMenu(Menu menu) {
       menu.add(0, MENU_NOUVELLE_NOTE, 0, "") 
           .findViewById(R.id.nouvelle_note);
       menu.add(0, MENU_QUITTER, 0, "")
           .findViewById(R.id.quitter);
       return true;
   }

   public boolean onOptionsItemSelected(MenuItem item){
       if (item.getItemId()==R.id.quitter){
          Dialog();
       }
       return super.onOptionsItemSelected(item);
       }

   protected Dialog onCreateDialog(int id) {
       AlertDialog.Builder builder = new AlertDialog.Builder(this);
       builder.setMessage("Are you sure you want to exit?");
       builder.setCancelable(false);
       builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int id) {
                       test.this.finish();
                  }
              })
              .setNegativeButton("No", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int id) {
                       dialog.cancel();
                  }
              });
       AlertDialog alert = builder.create();
       return alert;
   }
}

=> menu.xml

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


         android:title="Quitter" />  

Merci

Lien vers le commentaire
Partager sur d’autres sites

Sincèrement, je pense que tu devrais regarder du coté des tutoriaux Android...parce que là tu sembles tout mélanger...

sur la création de ton menu:

- A quelle valeur correspond MENU_NOUVELLE_NOTE??

- tu ajoute pour chaque entrée de ton menu un id, mais tu n'as pas charger le menu via Inflater...

Tu devrais y aller étape par étape...

Lien vers le commentaire
Partager sur d’autres sites

Mais j'ai lus les tutos, je me suis basé sur les tutos offciels, plus précisement sur ce code :

/* Creates the menu items */
public boolean onCreateOptionsMenu(Menu menu) {
   menu.add(0, MENU_NEW_GAME, 0, "New Game");
   menu.add(0, MENU_QUIT, 0, "Quit");
   return true;
}

/* Handles item selections */
public boolean onOptionsItemSelected(MenuItem item) {
   switch (item.getItemId()) {
   case MENU_NEW_GAME:
       newGame();
       return true;
   case MENU_QUIT:
       quit();
       return true;
   }
   return false;
}

Il n'indique pas de fonction Inflater, ne déclare pas MENU_NEW_GAME...

Et j'ai déjà réussi à afficher un menu ;)

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...