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 :

FATAL EXCEPTION: main android


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut FATAL EXCEPTION: main android
    Bonsoir;

    je suis entraîne de coder la partie du calcul d’itinéraire dans mon projet ,j'ai une erreur qui ferme tout.et voici LogCat::
    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
     
    02-24 23:38:20.869: E/AndroidRuntime(2858): FATAL EXCEPTION: main
    02-24 23:38:20.869: E/AndroidRuntime(2858): java.lang.IllegalStateException: Could not execute method of the activity
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at android.view.View$1.onClick(View.java:3597)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at android.view.View.performClick(View.java:4202)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at android.view.View$PerformClick.run(View.java:17340)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at android.os.Handler.handleCallback(Handler.java:725)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at android.os.Looper.loop(Looper.java:137)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at android.app.ActivityThread.main(ActivityThread.java:5039)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at java.lang.reflect.Method.invokeNative(Native Method)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at java.lang.reflect.Method.invoke(Method.java:511)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at dalvik.system.NativeStart.main(Native Method)
    02-24 23:38:20.869: E/AndroidRuntime(2858): Caused by: java.lang.reflect.InvocationTargetException
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at java.lang.reflect.Method.invokeNative(Native Method)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at java.lang.reflect.Method.invoke(Method.java:511)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at android.view.View$1.onClick(View.java:3592)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	... 11 more
    02-24 23:38:20.869: E/AndroidRuntime(2858): Caused by: android.os.NetworkOnMainThreadException
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at java.net.InetAddress.getAllByName(InetAddress.java:214)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at libcore.net.http.HttpEngine.connect(HttpEngine.java:311)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at com.example.bissgeolocalistor.Path.DrawPath(Path.java:51)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at com.example.bissgeolocalistor.MainActivity.calcRoute(MainActivity.java:38)
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	... 14 more
    02-24 23:38:20.896: D/dalvikvm(2858): GC_CONCURRENT freed 82K, 6% free 3557K/3760K, paused 75ms+127ms, total 278ms
    02-24 23:38:22.956: D/dalvikvm(2858): GC_CONCURRENT freed 68K, 6% free 3919K/4160K, paused 6ms+83ms, total 939ms
    02-24 23:38:22.956: D/dalvikvm(2858): WAIT_FOR_CONCURRENT_GC blocked 738ms
    02-24 23:38:25.257: I/Process(2858): Sending signal. PID: 2858 SIG: 9
    la class MainActivity::
    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
    package com.example.bissgeolocalistor;
     
    import android.graphics.Color;
    import android.os.Bundle;
    import android.view.View;
     
    import com.google.android.maps.GeoPoint;
    import com.google.android.maps.MapActivity;
    import com.google.android.maps.MapController;
    import com.google.android.maps.MapView;
     
    public class MainActivity extends MapActivity {
     
    	private MapView mapView;
    	private MapController mc;
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		mapView = (MapView) this.findViewById(R.id.mapView);
    		mapView.setBuiltInZoomControls(true);
    		mc = mapView.getController();
    		mc.setZoom(17);
    	}
     
        public void calcRoute(View v)
        {
    		double src_lat = 25.04202;
    		double src_long = 121.534761;
    		double dest_lat = 25.05202;
    		double dest_long = 121.554761;
    		GeoPoint srcGeoPoint = new GeoPoint((int) (src_lat * 1E6),
    				(int) (src_long * 1E6));
    		GeoPoint destGeoPoint = new GeoPoint((int) (dest_lat * 1E6),
    				(int) (dest_long * 1E6));
    		mapView.getController().animateTo(srcGeoPoint);
    		Path a= new Path();
    		a.DrawPath(srcGeoPoint, destGeoPoint, Color.BLACK, mapView);
     
        }
     
    	@Override
    	protected boolean isRouteDisplayed() {
    		// TODO Auto-generated method stub
    		return false;
    	}
     
    }
    el la class Path::::
    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
    110
    111
    112
    113
    114
    115
    116
    117
    package com.example.bissgeolocalistor;
     
    import java.io.IOException;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
     
    import org.w3c.dom.Document;
    import org.xml.sax.SAXException;
     
    import android.util.Log;
     
    import com.google.android.maps.GeoPoint;
    import com.google.android.maps.MapView;
     
    public class Path {
     
     
    	public Path() {
    	}
    	public void DrawPath(GeoPoint src, GeoPoint dest, int color,MapView mapView) {
    		// connect to map web service
    		StringBuilder urlString = new StringBuilder();
    		urlString.append("http://maps.google.com/maps?f=d&hl=en");
    		urlString.append("&saddr=");// from
    		urlString.append(Double.toString((double) src.getLatitudeE6() / 1.0E6));
    		urlString.append(",");
    		urlString.append(Double.toString((double) src.getLongitudeE6() / 1.0E6));
    		urlString.append("&daddr=");// to
    		urlString.append(Double.toString((double) dest.getLatitudeE6() / 1.0E6));
    		urlString.append(",");
    		urlString.append(Double.toString((double) dest.getLongitudeE6() / 1.0E6));
    		urlString.append("&ie=UTF8&0&om=0&output=kml");
     
    		Log.d("xxx", "URL=" + urlString.toString());
     
    		// get the kml (XML) doc. And parse it to get the coordinates(direction
    		// route).
    		Document doc = null;
    		HttpURLConnection urlConnection = null;
    		URL url = null;
    		try {
    			url = new URL(urlString.toString());
    			urlConnection = (HttpURLConnection) url.openConnection();
    			urlConnection.setRequestMethod("GET");
    			urlConnection.setDoOutput(true);
    			urlConnection.setDoInput(true);
    			urlConnection.connect();
     
    			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    			DocumentBuilder db = dbf.newDocumentBuilder();
    			doc = db.parse(urlConnection.getInputStream());
     
    			if (doc.getElementsByTagName("GeometryCollection").getLength() > 0) {
     
    				// String path =
    				// doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getNodeName();
    				String path = doc.getElementsByTagName("GeometryCollection")
    						.item(0).getFirstChild().getFirstChild()
    						.getFirstChild().getNodeValue();
     
    				Log.d("xxx", "path=" + path);
     
    				String[] pairs = path.split(" ");
    				String[] lngLat = pairs[0].split(","); // lngLat[0]=longitude
    														// lngLat[1]=latitude
    														// lngLat[2]=height
     
    				// src
    				GeoPoint startGP = new GeoPoint((int) (Double
    						.parseDouble(lngLat[1]) * 1E6), (int) (Double
    						.parseDouble(lngLat[0]) * 1E6));
    				mapView.getOverlays()
    						.add(new MyOverLay(startGP, startGP, 1));
     
    				GeoPoint gp1;
    				GeoPoint gp2 = startGP;
    				for (int i = 1; i < pairs.length; i++) // the last one would be
    														// crash
    				{
    					lngLat = pairs[i].split(",");
    					gp1 = gp2;
    					// watch out! For GeoPoint, first:latitude, second:longitude
    					gp2 = new GeoPoint(
    							(int) (Double.parseDouble(lngLat[1]) * 1E6),
    							(int) (Double.parseDouble(lngLat[0]) * 1E6));
    					mapView.getOverlays().add(
    							new MyOverLay(gp1, gp2, 2, color));
     
    					Log.d("xxx", "pair:" + pairs[i]);
     
    				}
    				mapView.getOverlays().add(new MyOverLay(dest, dest, 3)); // use
    																			// the
    																			// default
    																			// color
    			}
    		} catch (MalformedURLException e) {
     
    			e.printStackTrace();
    		} catch (IOException e) {
     
    			e.printStackTrace();
    		} catch (ParserConfigurationException e) {
     
    			e.printStackTrace();
     
    		} catch (SAXException e) {
     
    			e.printStackTrace();
    		}
     
    	}
    }
    et androidmanifest::
    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="com.example.bissgeolocalistor"
        android:versionCode="1"
        android:versionName="1.0" >
     
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
     
            <activity
                android:name="com.example.bissgeolocalistor.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <uses-library android:name="com.google.android.maps" />
        </application>
         <uses-permission android:name="android.permission.INTERNET" />
    </manifest>

    Si quelqu'un pouvait au moins me donner une piste

    Cordialement

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    NetworkOnMainThreadException.

    Ceci indique que tu fais une opération réseau dans le thread principal, ce qui est une mauvaise pratique en général, et qui est sanctionnée d'une exception sur Android.

    Le problème, comme indiqué par cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    02-24 23:38:20.869: E/AndroidRuntime(2858): 	at com.example.bissgeolocalistor.Path.DrawPath(Path.java:51)
    provient de ta méthode drawPath :
    Code Java : 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
    	public void DrawPath(GeoPoint src, GeoPoint dest, int color,MapView mapView) {
    		// connect to map web service
    		StringBuilder urlString = new StringBuilder();
    		urlString.append("http://maps.google.com/maps?f=d&hl=en");
    		urlString.append("&saddr=");// from
    		urlString.append(Double.toString((double) src.getLatitudeE6() / 1.0E6));
    		urlString.append(",");
    		urlString.append(Double.toString((double) src.getLongitudeE6() / 1.0E6));
    		urlString.append("&daddr=");// to
    		urlString.append(Double.toString((double) dest.getLatitudeE6() / 1.0E6));
    		urlString.append(",");
    		urlString.append(Double.toString((double) dest.getLongitudeE6() / 1.0E6));
    		urlString.append("&ie=UTF8&0&om=0&output=kml");
     
    		Log.d("xxx", "URL=" + urlString.toString());
     
    		// get the kml (XML) doc. And parse it to get the coordinates(direction
    		// route).
    		Document doc = null;
    		HttpURLConnection urlConnection = null;
    		URL url = null;
    		try {
    			url = new URL(urlString.toString());
    			urlConnection = (HttpURLConnection) url.openConnection();
    			urlConnection.setRequestMethod("GET");
    			urlConnection.setDoOutput(true);
    			urlConnection.setDoInput(true);
    			urlConnection.connect();
     
    			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    			DocumentBuilder db = dbf.newDocumentBuilder();
    			doc = db.parse(urlConnection.getInputStream());
     
    			if (doc.getElementsByTagName("GeometryCollection").getLength() > 0) {
     
    				// String path =
    				// doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getNodeName();
    				String path = doc.getElementsByTagName("GeometryCollection")
    						.item(0).getFirstChild().getFirstChild()
    						.getFirstChild().getNodeValue();
     
    				Log.d("xxx", "path=" + path);
     
    				String[] pairs = path.split(" ");
    				String[] lngLat = pairs[0].split(","); // lngLat[0]=longitude
    														// lngLat[1]=latitude
    														// lngLat[2]=height
     
    				// src
    				GeoPoint startGP = new GeoPoint((int) (Double
    						.parseDouble(lngLat[1]) * 1E6), (int) (Double
    						.parseDouble(lngLat[0]) * 1E6));
    				mapView.getOverlays()
    						.add(new MyOverLay(startGP, startGP, 1));
     
    				GeoPoint gp1;
    				GeoPoint gp2 = startGP;
    				for (int i = 1; i < pairs.length; i++) // the last one would be
    														// crash
    				{
    					lngLat = pairs[i].split(",");
    					gp1 = gp2;
    					// watch out! For GeoPoint, first:latitude, second:longitude
    					gp2 = new GeoPoint(
    							(int) (Double.parseDouble(lngLat[1]) * 1E6),
    							(int) (Double.parseDouble(lngLat[0]) * 1E6));
    					mapView.getOverlays().add(
    							new MyOverLay(gp1, gp2, 2, color));
     
    					Log.d("xxx", "pair:" + pairs[i]);
     
    				}
    				mapView.getOverlays().add(new MyOverLay(dest, dest, 3)); // use
    																			// the
    																			// default
    																			// color
    			}
    		} catch (MalformedURLException e) {
     
    			e.printStackTrace();
    		} catch (IOException e) {
     
    			e.printStackTrace();
    		} catch (ParserConfigurationException e) {
     
    			e.printStackTrace();
     
    		} catch (SAXException e) {
     
    			e.printStackTrace();
    		}
     
    	}


    Tout traitement réseau (et par extension : tout traitement potentiellement long risquant de faire geler l'interface utilisateur) est à faire dans un thread séparé.

    Je te suggère donc de passer ton appel réseau dans une AsyncTask, ou dans un thread.

    À côté de ça, ton log des erreurs devrait plutôt être Log.e(TAG, MESSAGE, exception) et tu ne fermes pas les flux que tu ouvres.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

Discussions similaires

  1. Erreur "FATAL EXCEPTION: main"
    Par bza88 dans le forum Android
    Réponses: 1
    Dernier message: 06/06/2013, 02h28
  2. Erreur "FATAL EXCEPTION: main"
    Par Arwa89 dans le forum Android
    Réponses: 24
    Dernier message: 19/04/2013, 15h46
  3. [Système] Fatal error : main ()
    Par westpc dans le forum Langage
    Réponses: 17
    Dernier message: 22/10/2006, 12h02
  4. [Graphics2D]pb, fatal exception occured
    Par julien.v dans le forum 2D
    Réponses: 17
    Dernier message: 03/06/2005, 11h09
  5. class php5 - Fatal error: main() [function.main]
    Par tom261285 dans le forum Langage
    Réponses: 3
    Dernier message: 21/01/2005, 14h41

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