Android 导致崩溃的阵列适配器
我正在尝试实现一个阵列适配器,每次活动启动时都会收到一个错误Android 导致崩溃的阵列适配器,android,listview,android-arrayadapter,Android,Listview,Android Arrayadapter,我正在尝试实现一个阵列适配器,每次活动启动时都会收到一个错误 } } 这是我的课,我已经记下了导致车祸的那条线 public class Attend extends Activity{ ListView amattendees; ListView pmattendees; String attendingAm[]; String attendingPm[]; JSONParser jParser = new JSONParser(); JSONObject json_eve
}
}
这是我的课,我已经记下了导致车祸的那条线
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();
}
}
}
来自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
04-12 16:58:32.683:E/AndroidRuntime(7920):致命异常:main
04-12 16:58:32.683:E/AndroidRuntime(7920):java.lang.RuntimeException:无法启动活动组件信息{org.jujitsu.app.com/org.jujitsu.app.com.attent}:java.lang.NullPointerException
04-12 16:58:32.683:E/AndroidRuntime(7920):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816)
04-12 16:58:32.683:E/AndroidRuntime(7920):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1837)
04-12 16:58:32.683:E/AndroidRuntime(7920):在android.app.ActivityThread.access$1500(ActivityThread.java:132)
04-12 16:58:32.683:E/AndroidRuntime(7920):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1033)
04-12 16:58:32.683:E/AndroidRuntime(7920):位于android.os.Handler.dispatchMessage(Handler.java:99)
04-12 16:58:32.683:E/AndroidRuntime(7920):在android.os.Looper.loop(Looper.java:143)上
04-12 16:58:32.683:E/AndroidRuntime(7920):位于android.app.ActivityThread.main(ActivityThread.java:4196)
04-12 16:58:32.683:E/AndroidRuntime(7920):位于java.lang.reflect.Method.Invokenactive(本机方法)
04-12 16:58:32.683:E/AndroidRuntime(7920):位于java.lang.reflect.Method.invoke(Method.java:507)
04-12 16:58:32.683:E/AndroidRuntime(7920):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-12 16:58:32.683:E/AndroidRuntime(7920):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
4-12 16:58:32.683:E/AndroidRuntime(7920):在dalvik.system.NativeStart.main(本机方法)
04-12 16:58:32.683:E/AndroidRuntime(7920):由以下原因引起:java.lang.NullPointerException
04-12 16:58:32.683:E/AndroidRuntime(7920):位于java.util.Arrays$ArrayList。(Arrays.java:47)
04-12 16:58:32.683:E/AndroidRuntime(7920):位于java.util.Arrays.asList(Arrays.java:169)
04-12 16:58:32.683:E/AndroidRuntime(7920):在android.widget.ArrayAdapter.(ArrayAdapter.java:138)
04-12 16:58:32.683:E/AndroidRuntime(7920):在org.jujitsu.app.com.attribute.onCreate(attribute.java:124)
04-12 16:58:32.683:E/AndroidRuntime(7920):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)上
04-12 16:58:32.683:E/AndroidRuntime(7920):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780)
04-12 16:58:32.683:E/AndroidRuntime(7920):。。。还有11个
这样做:
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1,
createArrayFromJSON(json_array_participants));
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,android.R.id.text1,
createArrayFromJSON(json_数组_参与者));
把这个移到json的
try
块中好吧,这里唯一可以为空的是你的json\u参与者\u arr,所以一定有一些东西是ArrayAdapter构造函数不喜欢的。它在try/catch中初始化。您是否查看了catch stacktrace以查看它是否由于某种原因失败?您有一个来自json\u arr
的null指针异常为null,可能是因为有什么东西抛出了JSONException
,您几乎捕获了它,然后忽略了它。(不要这样做),尝试一下,看看你会遇到什么异常
}
}
一旦解决了这个问题,您还需要通过在UI线程上发出网络请求(jParser.getJSONFromUrl行,查看或)来修复它。根据您使用的操作系统版本,这实际上可能是您的潜在问题。像这样使用它
}
}
String[] arrParticipants = createArrayFromJSON(json_array_participants);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1, arrParticipants );
从日志中发布崩溃堆栈跟踪。我现在添加了堆栈跟踪。谢谢抱歉,看起来stackoverflow删除了我的标签。我已经这样做了。。。我会用LogCat日志和附加标签更新帖子。啊,对了,干杯。。。看来这不是问题本身。。。我想是我得到的JSONArray导致了它。也许我声明的Json类型是错误的。。这是我从json提要接收到的信息:响应:{“事件”:{……“参与者”的其他内容:[]},……其他内容}