Bonjour tout le monde,
J'ai créé une application qui construit un tableau myList à partir d'un première activité et la transfère vers une autre activité où elle va être triée et affichée dans un ListView.
Mais lorsque je teste mon application, j'obtiens les erreurs suivantes dans mon logcat :Voici mes classes java:04-12 01:27:45.362: D/AndroidRuntime(899): Shutting down VM
04-12 01:27:45.372: W/dalvikvm(899): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
04-12 01:27:45.442: E/AndroidRuntime(899): FATAL EXCEPTION: main
04-12 01:27:45.442: E/AndroidRuntime(899): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.projet_fin_etude/com.example.projet_fin_etude.Trie}: java.lang.NullPointerException
04-12 01:27:45.442: E/AndroidRuntime(899): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
04-12 01:27:45.442: E/AndroidRuntime(899): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
04-12 01:27:45.442: E/AndroidRuntime(899): at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-12 01:27:45.442: E/AndroidRuntime(899): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
04-12 01:27:45.442: E/AndroidRuntime(899): at android.os.Handler.dispatchMessage(Handler.java:99)
04-12 01:27:45.442: E/AndroidRuntime(899): at android.os.Looper.loop(Looper.java:137)
04-12 01:27:45.442: E/AndroidRuntime(899): at android.app.ActivityThread.main(ActivityThread.java:5041)
04-12 01:27:45.442: E/AndroidRuntime(899): at java.lang.reflect.Method.invokeNative(Native Method)
04-12 01:27:45.442: E/AndroidRuntime(899): at java.lang.reflect.Method.invoke(Method.java:511)
04-12 01:27:45.442: E/AndroidRuntime(899): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-12 01:27:45.442: E/AndroidRuntime(899): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-12 01:27:45.442: E/AndroidRuntime(899): at dalvik.system.NativeStart.main(Native Method)
04-12 01:27:45.442: E/AndroidRuntime(899): Caused by: java.lang.NullPointerException
04-12 01:27:45.442: E/AndroidRuntime(899): at com.example.projet_fin_etude.Trie.onCreate(Trie.java:44)
04-12 01:27:45.442: E/AndroidRuntime(899): at android.app.Activity.performCreate(Activity.java:5104)
04-12 01:27:45.442: E/AndroidRuntime(899): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-12 01:27:45.442: E/AndroidRuntime(899): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
04-12 01:27:45.442: E/AndroidRuntime(899): ... 11 more
Marqueur.java:
Trie.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
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 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_trie: Intent intent = new Intent(MarqueurActivity.this, Trie.class); intent.putExtra("myList", (Serializable)myList); startActivity(intent); default: return super.onOptionsItemSelected(item); } } @Override protected boolean isRouteDisplayed() { return false; } @Override public void onLocationChanged(Location location) { lat = location.getLatitude(); lng = location.getLongitude(); Toast.makeText( getBaseContext(),"Location change to : Latitude = " + lat + " Longitude = " + lng, Toast.LENGTH_LONG).show(); GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); mc.animateTo(p); mc.setCenter(p); Intent intent = getIntent(); if (intent != null) { String text=intent.getStringExtra(EXTRA_SUJET_RECHERCHE); Drawable drawable = this.getResources().getDrawable(R.drawable.marqueur1); final ListItimizedOverlay itemizedoverlay = new ListItimizedOverlay(drawable,this); final String url ="https://maps.googleapis.com/maps/api/place/textsearch/json?query="+text+"&key=AIzaSyDxms7wMJorpD9LZVRL9OiozgV1D9wJKxo&sensor=true&location="+lat+","+lng+"&radius=500"; new AsyncTask<Void, Void, JSONObject>(){ @Override protected JSONObject doInBackground(Void... params) { // instancier la classe JsonParser JsonParser jParser = new JsonParser (); // récupérer le JSONObject à partir de lurl du fichier employes.json JSONObject json = jParser.getJSONFromUrl(url); return json; }; protected void onPostExecute(JSONObject json) { try { // récupérer la liste de tous les employés JSONArray results = json.getJSONArray(TAG_results); int j=results.length(); myList = new Place[j]; // parcourir toute la liste des employés for(int i = 0; i < results.length(); i++){ // récupérer un employé de type JSONObject JSONObject emp = results.getJSONObject(i); // récupérer le JSONObject phone qui contient deux items JSONObject geometry = emp.getJSONObject(TAG_geometry); JSONObject location = geometry.getJSONObject(TAG_location); String latitude = location.getString(TAG_lat); String longitude= location.getString(TAG_lng); double b = Double.parseDouble(latitude); double c = Double.parseDouble(longitude); String nom= emp.getString(TAG_name); String adresse=emp.getString(TAG_adresse); String reference =emp.getString(TAG_reference); myList[i]=new Place(reference,nom,adresse,b,c); GeoPoint geoPoint = new GeoPoint((int) (b* 1E6) , (int)(c* 1E6)); OverlayItem overlayitem = new OverlayItem(geoPoint, nom, adresse); itemizedoverlay.addOverlayItem(overlayitem); List<Overlay> mapOverlays = mapView.getOverlays(); mapOverlays.add(itemizedoverlay); } } catch(JSONException e) { e.printStackTrace(); } }; }.execute(); } }
Quelqu'un saurait-il m'indiquer d'où vient le problème ?
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
118 package com.example.projet_fin_etude; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.ListActivity; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; public class Trie extends ListActivity { Place [] myList; private static final String TAG_rows = "rows"; private static final String TAG_elements = "elements"; private static final String TAG_distance= "distance"; private static final String TAG_value= "value"; String url; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listplaceholder); ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(); Intent intent = getIntent(); Bundle extras = intent.getExtras(); if (extras != null){ this.myList = (Place[])extras.getSerializable("myList"); url="http://maps.googleapis.com/maps/api/distancematrix/json?origins="+myList[0].getLatitude()+","+myList[0].getLongitude()+"|"+"&destinations="; for(int i=1;i<myList.length;i++) { url=url+myList[i].getLatitude()+","+myList[i].getLongitude()+"|"; } url=url+"&mode=walking&language=fr-FR&sensor=true"; new AsyncTask<Void, Void, JSONObject>(){ @Override protected JSONObject doInBackground(Void... params) { // instancier la classe JsonParser JsonParser jParser = new JsonParser (); // récupérer le JSONObject à partir de lurl du fichier employes.json JSONObject json = jParser.getJSONFromUrl(url); return json; }; protected void onPostExecute(JSONObject json) { try { // récupérer la liste de tous les employés JSONArray results = json.getJSONArray(TAG_rows); // parcourir toute la liste des employés for(int i = 0; i < results.length(); i++){ // récupérer un employé de type JSONObject JSONObject emp = results.getJSONObject(i); // récupérer le JSONObject phone qui contient deux items JSONObject elements = emp.getJSONObject(TAG_elements); JSONObject dist = elements.getJSONObject(TAG_distance); String value = dist.getString(TAG_value); int val_dist=Integer.parseInt(value); myList[i].setDistance(val_dist); } } catch(JSONException e) { e.printStackTrace(); } }; }.execute(); } Arrays.sort(myList); for(int i=0;i<myList.length;i++) { HashMap<String, String> map = new HashMap<String, String>(); map.put("id", String.valueOf(i)); map.put("name",myList[i].getNom()); map.put("adresse", myList[i].getAdresse()); list.add(map); } ListAdapter adapter = new SimpleAdapter(this, list , R.layout.activity_trie, new String[] { "name", "adresse" }, new int[] { R.id.item_title, R.id.item_subtitle }); setListAdapter(adapter); final ListView lv = getListView(); lv.setTextFilterEnabled(true); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { @SuppressWarnings("unchecked") HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position); Toast.makeText(Trie.this, "ID '" + o.get("id") + "' was clicked.", Toast.LENGTH_SHORT).show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_trie, menu); return true; } }
Merci d'avance pour votre aide.
Partager