2012-04-12 2 views
0

Я пытаюсь реализовать адаптер массива, и я получаю сообщение об ошибке каждый раз, когда начинается действие.ArrayAdapter вызывает сбой

вот мой класс, и я отметил линию, которая вызывает сбой.

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(); 
       } 

эта линия сбрасывает его.

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

.

} 






} 

Журнал ошибок от 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

вывесить аварии StackTrace из журнала. – superfell

+0

Теперь я добавил стек. благодаря! – jimbob

ответ

1

Делают это так:

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

и переместить try блок это внутри JSon в

+0

извините, похоже, что stackoverflow удалил мои теги. Я уже делаю это так ... Ill обновил сообщение журналом LogCat и добавленными тегами. – jimbob

+0

ok обновлено Waqas thankyou: 3! – jimbob

+0

Смотрите мой обновленный ответ – waqaslam

0

Ну, единственное, что там * может быть нулевым, это ваш json_participants_arr, поэтому в нем должно быть что-то, что ArrayAdapter con structor не нравится. Он инициализируется в вашей попытке/уловке. Вы заглянули в эту ловушку stacktrace, чтобы убедиться, что она по какой-то причине не работает?

+0

Возможно, я объявляю неправильный тип Json .. это то, что я получаю от json feed: Ответ: { «event»: {\t ....... некоторые другие вещи «участники»: [] }, ... некоторые другие вещи } – jimbob

0

У вас есть исключение из null-указателя из json_participants_arr, являющееся нулевым, возможно, потому что что-то бросило JSONException, которое вы в значительной степени поймаете, а затем проигнорируете. (не делайте этого), возьмите try/catch и посмотрите, какое исключение вы получаете.

После того, как вы получили, что поправила вы также хотите, чтобы вернуться и исправить ее от создания сетевых запросов на потоке пользовательского интерфейса (линия jParser.getJSONFromUrl, посмотрите на loaders или async tasks). в зависимости от того, какую версию ОС вы используете, это может быть вашей основной проблемой.

0

использовать его, как это ...

String[] arrParticipants = createArrayFromJSON(json_array_participants); 

ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1, arrParticipants); 
Смежные вопросы