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 :

Application qui plante (quitter, click sur listeView)


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Par défaut Application qui plante (quitter, click sur listeView)
    Bonsoir,

    Je débute encore sous Android, et voici ma situation : mon activité principale est une TabActivity dans laquelle chaque onglet démarre une nouvelle Activity.


    Voici mon activity qui plante lors du click sur un item ou en appuyant sur la touche "retour" pour quitter

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    package Tarabbia.Xamax;
     
    import java.util.ArrayList;
    import java.util.HashMap;
     
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.TabHost;
    import android.widget.TabHost.TabSpec;
     
    public class Xamax_tab extends Activity {
    	private ListView maListViewPerso;
     
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
     
            //Récupération de la listview créée dans le fichier main.xml
            maListViewPerso = (ListView) findViewById(R.id.listviewperso);
     
            //Création de la ArrayList qui nous permettra de remplire la listView
            ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
     
            //On déclare la HashMap qui contiendra les informations pour un item
            HashMap<String, String> map;
     
            map = new HashMap<String, String>();
            //on insère un élément titre que l'on récupérera dans le textView titre créé dans le fichier affichageitem.xml
            map.put("titre", "Word");
            //on insère un élément description que l'on récupérera dans le textView description créé dans le fichier affichageitem.xml
            map.put("description", "Editeur de texte");
            //on insère la référence à l'image (convertit en String car normalement c'est un int) que l'on récupérera dans l'imageView créé dans le fichier affichageitem.xml
            map.put("img", String.valueOf(R.drawable.tab));
            //enfin on ajoute cette hashMap dans la arrayList
            listItem.add(map);
     
            //On refait la manip plusieurs fois avec des données différentes pour former les items de notre ListView
     
            map = new HashMap<String, String>();
            map.put("titre", "Excel");
            map.put("description", "Tableur");
            map.put("img", String.valueOf(R.drawable.tab));
            listItem.add(map);
     
            map = new HashMap<String, String>();
            map.put("titre", "Power Point");
            map.put("description", "Logiciel de présentation");
            map.put("img", String.valueOf(R.drawable.tab));
            listItem.add(map);
     
            map = new HashMap<String, String>();
            map.put("titre", "Outlook");
            map.put("description", "Client de courrier électronique");
            map.put("img", String.valueOf(R.drawable.tab));
            listItem.add(map);
     
            //Création d'un SimpleAdapter qui se chargera de mettre les items présent dans notre list (listItem) dans la vue affichageitem
            SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.affichageitem,
                   new String[] {"img", "titre", "description"}, new int[] {R.id.img, R.id.titre, R.id.description});
     
            //On attribut à notre listView l'adapter que l'on vient de créer
            maListViewPerso.setAdapter(mSchedule);
     
            //Enfin on met un écouteur d'évènement sur notre listView
            maListViewPerso.setOnItemClickListener(new OnItemClickListener() {
    			@Override
            	@SuppressWarnings("unchecked")
             	public void onItemClick(AdapterView<?> a, View v, int position, long id) {
     
            		try {
            			//on récupère la HashMap contenant les infos de notre item (titre, description, img)
                		HashMap<String, String> map = (HashMap<String, String>) maListViewPerso.getItemAtPosition(position);
     
                		AlertDialog alertDialog = new AlertDialog.Builder(Xamax_tab.this).create();
                		alertDialog.setTitle("Reset...");
                		alertDialog.setMessage("R u sure?");
                		alertDialog.setButton3("OK", new DialogInterface.OnClickListener() {
                		      public void onClick(DialogInterface dialog, int which) {
     
                		       finish();
     
                		    } });
                		alertDialog.setIcon(android.R.drawable.alert_dark_frame);
                		alertDialog.show();
                		finish();
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
            	}
             });
     
        }
     
     
    }
    Mon activité qu'appelle l'activité qui plante:

    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
    super.onCreate(savedInstanceState);
    	    //setContentView(R.layout.main);
     
    	    TabHost tabHost = getTabHost();  // The activity TabHost
    	    TabHost tabs;
    	    tabs = (TabHost) findViewById(android.R.id.tabhost);
     
            LayoutInflater.from(this).inflate(R.layout.main, tabHost.getTabContentView(), true);
            tabHost.setup(); 
            tabHost.addTab(tabHost.newTabSpec("Xamax_tab").setIndicator("Xamax tab",this.getResources().getDrawable(R.drawable.tab)).setContent(new Intent(this, Xamax_tab.class)));
            tabHost.addTab(tabHost.newTabSpec("Xamax_jt").setIndicator("Xamax jt",this.getResources().getDrawable(android.R.drawable.ic_menu_agenda)).setContent(new Intent(this, Xamax_jt.class)));
     
    	    tabHost.setCurrentTab(0);
     
    	    tabs.setup();

    Mon layout:

    Code XML : 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"?>
    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@drawable/back_xamax"
            >
            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />
            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
     
                <ListView 
                    android:id="@+id/listviewperso"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent" 
                    android:text="this is a third tab" />
            </FrameLayout>
        </LinearLayout>
    </TabHost>

    J'ai cherché un long moment sur des problèmes de Thread, activité, le logcat m'informe d'une erreur: "fatal exception".

    source: https://sites.google.com/site/jtarabbia/fichiers

    Merci.

  2. #2
    Membre confirmé Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Par défaut
    Salut,

    D'abord, pense à mettre des balises [CODE] pour que ton code soit plus lisible.

    Ensuite, j'ai essayé ton code en modifiant le "Project Build Target" en Android 2.2 (tu as référencé l'API 2.3), et ton programme ne plante pas...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Par défaut
    Je te remercie de m'avoir répondu.

    J'ai alors changé la version api en 8 pour le 2.2 au lieu de 2.3.

    ce qui me donne : target=Google Inc.:Google APIs:8

    cependant, je rencontre toujours un "force close" lorsque je presse la touche retour sur le tab "xamax_tab" ou si je clique sur un élément de la listView.
    Mes testes je l'ai fait sur mon appareil physique (Samsung Galaxy S).

    j'ai constaté que mon application se ferme sans message d'erreur sur l’émulateur. mais lors du click sur la listeView il se ferme aussi alors que ça devrait ouvrir une alerte box.

    J'ai aussi constaté qu'en supprimant tout le code sur ma classe xamax_tab avec comme setContentView(R.layout.main); ça plante aussi losque je quitte. Si je remplace en mettant cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TextView textview = new TextView(this);
     textview.setText("This is the Xamax jt");
     setContentView(textview);
    Plus rien ne plante; conclusion, mon layout main.xml fait planter mon programme. pourquoi ? je l'ai validé par un validateur XML, et il n'a pas trouvé d'erreur.

    Merci de me répondre.

  4. #4
    Membre confirmé Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Par défaut
    Pour les balises [CODE], il suffit de cliquer sur le # au niveau mise en forme de ton message.

    Pour ton application, il faut que tu mettes Android 2.2 et non pas API 2.2 (du moins en faisant ça ton code fonctionne chez moi)...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Par défaut
    J'ai appliqué cela : target=android-8

    Est-ce juste ?

    Si oui je rencontre un "force close" lors du quitter. tu as essayé sur ton Nexus One ?

    J'ai reuploadé mon projet avec le changement que j'ai fait.

    https://sites.google.com/site/jtarabbia/fichiers

    Incroyable que chez toi pas de "force close" et chez moi oui.

    John

  6. #6
    Membre confirmé Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Par défaut
    Non, il faut que tu cliques droit sur ton projet (dans la colonne package explorer d'eclipse), et tu fais "properties", là à gauche tu sélectionnes "Android", et à droite tu choisis Android 2.2 (et pas API).

    Ça a marché chez moi (sur le Nexus).

Discussions similaires

  1. Application qui plante au lancement (ok sur l'émulateur)
    Par benthebest dans le forum Android
    Réponses: 10
    Dernier message: 03/12/2011, 23h13
  2. [WD15] Application qui plante uniquement sur un poste
    Par mik3.42 dans le forum WinDev
    Réponses: 3
    Dernier message: 09/04/2010, 09h38
  3. Thread et application qui plante
    Par Balbuzard dans le forum Général Java
    Réponses: 10
    Dernier message: 29/08/2008, 16h36
  4. Application qui plante à cause des tabs ?
    Par astrolus dans le forum Windows Forms
    Réponses: 1
    Dernier message: 02/05/2008, 22h54
  5. Application qui plante quand lancé par sans débugage
    Par bossun dans le forum Général Dotnet
    Réponses: 9
    Dernier message: 12/07/2007, 12h08

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