解析中绑定异常的数组索引

Array index of bound exception in parse

我正在尝试将对象保存在解析云中,但它给了我

java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0

密码是:

      private void parsingTask() {
    //po=new ParseObject("LatLng");
    ParseQuery<ParseObject> query=ParseQuery.getQuery("LatLng");
    query.whereEqualTo("imei_code","357146054169800");
    query.findInBackground(new FindCallback<ParseObject>() {

        @Override
        public void done(List<ParseObject> latlanglist, ParseException e) {
            if(e==null){
        String firstItemId=latlanglist.get(0).getObjectId();
        lat=latlanglist.get(0).getString("latitude");
        lang=latlanglist.get(0).getString("longitude");
        e1.setText(lat);
        e2.setText(lang);
        e3.setText(firstItemId);

            Toast.makeText(getApplicationContext(),"Found the New Location:\nLatitude:"+lat+
                    "\nLongitude:"+lang+"\nObjectID:"+firstItemId,Toast.LENGTH_LONG).show();
            }
            else{

            Toast.makeText(getApplicationContext(), "Error was found\n"+e,Toast.LENGTH_LONG).show();

            }


        }
    });
    // TODO Auto-generated method stub

}

logcat 输出:

01-15 14:34:21.064: E/AndroidRuntime(10986): FATAL EXCEPTION: main
01-15 14:34:21.064: E/AndroidRuntime(10986): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
01-15 14:34:21.064: E/AndroidRuntime(10986):    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at java.util.ArrayList.get(ArrayList.java:304)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at com.robotrackerserver.MainActivity.done(MainActivity.java:43)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at com.parse.FindCallback.internalDone(FindCallback.java:45)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at com.parse.FindCallback.internalDone(FindCallback.java:31)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at com.parse.Parse.run(Parse.java:973)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at android.os.Handler.handleCallback(Handler.java:615)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at android.os.Looper.loop(Looper.java:137)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at android.app.ActivityThread.main(ActivityThread.java:4944)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at java.lang.reflect.Method.invokeNative(Native Method)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at java.lang.reflect.Method.invoke(Method.java:511)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
01-15 14:34:21.064: E/AndroidRuntime(10986):    at dalvik.system.NativeStart.main(Native Method)
01-15 14:34:21.134: D/dalvikvm(10986): GC_CONCURRENT freed 311K, 15% free 7079K/8327K, paused 21ms+4ms, total 118ms

异常意味着返回的列表 List<ParseObject> latlanglist 为空。 您应该检查必须处理的对象的约束,而不是检查异常是否为空。

  if(latlanglist != null && !latlanglist.isEmpty()){

  }

试试这个

if(e==null&& latlanglist!=null){
if(latlanglist.size()>0){
String firstItemId=latlanglist.get(0).getObjectId();
lat=latlanglist.get(0).getString("latitude");
lang=latlanglist.get(0).getString("longitude");
e1.setText(lat);
e2.setText(lang);
e3.setText(firstItemId);

Toast.makeText(getApplicationContext(),"Found the New Location:\nLatitude:"+lat+
"\nLongitude:"+lang+"\nObjectID:"+firstItemId,Toast.LENGTH_LONG).show();
}
else{

Toast.makeText(getApplicationContext(), "Error was found\n"+e,Toast.LENGTH_LONG).show();

}

}
}