2012-04-12 3 views
0

J'essaye d'implémenter un adaptateur de tableau et j'obtiens une erreur chaque fois que l'activité commence.ArrayAdapter provoquant une panne

Voici ma classe et j'ai noté la ligne qui provoque le crash.

public class Attend extends Activity{ 

ListView amattendees; 
ListView pmattendees; 
String attendingAm[]; 
String attendingPm[]; 
JSONParser jParser = new JSONParser(); 
JSONObject json_event; 
String json_name = null; 
String json_badge_id = null; 
String json_venue_id = null; 
String json_event_id = null; 
String json_id = null; 
String json_date = null; 
String json_amLesson = null; 
String json_pmLesson = null; 
String json_youtubeid = null; 
String json_lessonHTML = null; 
String json_active = null; 
String json_created = null; 
String json_attending = null; 
String json_status = null; 
String fragmented = null; 
String json_title = null; 
String json_event_description = null; 

String[] participants = null; 
String setAttending_response = "Attend"; 
String scannedBar = "default"; 
SharedPreferences settings; 
String json_videopath; 
String str_accesstoken; 
Context context; 
VideoView youtubeVideo; 
String sAttending = "false"; 
String home_venue_long = null; 
String home_venue_lat = null; 
private static final int REQUEST_BARCODE = 0; 
double my_longitude; 
double my_latitude; 
String json_venue_distance; 
String json_nearest_venue; 
String json_nearest_venue_logo; 
String json_nearest_venue_long; 
String json_nearest_venue_lat; 
String json_participants_arr[]; 


public String[] createArrayFromJSON(JSONArray json_array_participants){ 
     String json_participants[] = new String[json_array_participants.length()]; 
     json_participants_arr = new String[json_array_participants.length()]; 
for(int i = 0; i < json_participants.length; i++){ 
    try{ 
     json_participants[i] = json_array_participants.getString(i); 
     json_participants_arr[i] = json_array_participants.getString(i); 
     } 
     catch(JSONException e){ 
     e.getStackTrace(); 
     } 
    } 
return json_participants; 
} 



public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.attend);    

     amattendees = (ListView)findViewById(R.id.amattendees); 
     pmattendees = (ListView)findViewById(R.id.pmattendees); 



     try{ 
       //get the JSON values from the URL. 
       JSONObject json = jParser.getJSONFromUrl("http://ajsonfeed.com?hi=23849348934"); 


       json_event = json.getJSONObject("event"); 
       json_name = json_event.getString("name"); 
       json_status = json.getString("status"); 
       json_badge_id = json_event.getString("badge_id"); 
       json_venue_id = json_event.getString("venue_id"); 
       json_event_id = json_event.getString("event_id"); 
       json_id = json_event.getString("id"); 
       json_date = json_event.getString("date"); 
       json_amLesson = json_event.getString("amLesson"); 
       json_pmLesson = json_event.getString("pmLesson"); 
       json_youtubeid= json_event.getString("youtubeId"); 
       json_lessonHTML = json_event.getString("lessonHTML"); 
       json_active = json_event.getString("active"); 
       json_created = json_event.getString("created"); 
       json_attending = json_event.getString("attending"); 
       fragmented = json_event.getString("fragmented"); 
       JSONArray json_array_participants = json_event.getJSONArray("participants"); 

       createArrayFromJSON(json_array_participants); 


       } 
       catch(JSONException e){ 
        e.getStackTrace(); 
       } 

cette ligne se bloque.

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,android.R.id.text1, json_participants_arr); 

.

} 






} 

journal d'erreur de logcat:

04-12 16:58:32.683: E/AndroidRuntime(7920): FATAL EXCEPTION: main 
04-12 16:58:32.683: E/AndroidRuntime(7920): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.jujitsu.app.com/org.jujitsu.app.com.Attend}: java.lang.NullPointerException 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1837) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at android.app.ActivityThread.access$1500(ActivityThread.java:132) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1033) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at android.os.Looper.loop(Looper.java:143) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at android.app.ActivityThread.main(ActivityThread.java:4196) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at java.lang.reflect.Method.invoke(Method.java:507) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at dalvik.system.NativeStart.main(Native Method) 
04-12 16:58:32.683: E/AndroidRuntime(7920): Caused by: java.lang.NullPointerException 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at java.util.Arrays$ArrayList.<init>(Arrays.java:47) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at java.util.Arrays.asList(Arrays.java:169) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:138) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at org.jujitsu.app.com.Attend.onCreate(Attend.java:124) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780) 
04-12 16:58:32.683: E/AndroidRuntime(7920):  ... 11 more 
+1

afficher le stacktrace crash du journal. – superfell

+0

J'ai ajouté le stacktrace maintenant. Merci! – jimbob

Répondre

1

le faire comme ceci:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, 
         createArrayFromJSON(json_array_participants)); 

et déplacer ce bloc à l'intérieur JSON try

+0

désolé ressemble à stackoverflow supprimé mes tags. Je le fais déjà comme ça ... J'ai mis à jour le message avec un journal LogCat et des balises ajoutées. – jimbob

+0

ok mis à jour Waqas thankyou: 3! – jimbob

+0

Voir ma mise à jour – waqaslam

0

Eh bien, la seule chose là que * peut être nul est votre json_participants_arr, donc il doit y avoir quelque chose à ce sujet que le ArrayAdapter constr uctor n'aime pas. C'est initialisé dans votre try/catch. Avez-vous regardé dans ce stacktrace attraper pour voir si elle échoue pour une raison quelconque?

+0

Peut-être que je déclare le type JSON mal .. ce que je reçois de l'alimentation JSON: Réponse: { "événement": {\t ....... quelques autres trucs "participants": [] }, ... d'autres choses } – jimbob

0

Vous avez une exception de pointeur nul de json_participants_arr étant nulle, probablement parce que quelque chose a jeté JSONException que vous attrapez à peu près, puis ignorez. (Ne faites pas cela), prenez l'essai/attrape et voyez quelle exception vous obtenez.

Une fois que vous avez obtenu que vous aurez également besoin redressé de revenir et de le corriger de faire des requêtes réseau sur le thread d'interface utilisateur (la ligne jParser.getJSONFromUrl, regardez loaders ou async tasks). Selon la version du système d'exploitation que vous utilisez, cela pourrait être votre problème sous-jacent.

0

utiliser comme ceci ...

String[] arrParticipants = createArrayFromJSON(json_array_participants); 

ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1, arrParticipants); 
Questions connexes