2015-12-10 73 views
0

我想查詢我的應用程序中註冊的所有parse.com用戶。我跟着引導寫下了這個查詢Parse.com查詢無法檢索多個對象

try{ 
    name=Name.getText().toString(); 
    ParseQuery<ParseUser> query = ParseUser.getQuery(); 
    query.whereMatches("username", name); 
    query.findInBackground(new FindCallback<ParseUser>() { 
    public void done(List<ParseUser> objects, ParseException e) { 
      if (e == null) { 
       if (!objects.isEmpty()) { 
        show.setText(String.valueOf(objects.size())); 
        for (ParseUser singleobject : objects) { 
        mail[i] = singleobject.get("email").toString(); 
        uname[i] = singleobject.get("username").toString(); 
        i++; 
        } 
       } else { 
        show.setText("No Tuples"); 
       } 
      } else { 
       Toast.makeText(getApplicationContext(), "Query Not Successful", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 
    }catch (NullPointerException x){ 
     Toast.makeText(getApplicationContext(), "Null Pointer Exception", Toast.LENGTH_LONG); 
    }} 

這個查詢工作良好,當輸入檢索一個元組,但是當我給檢索多個元組則拋出一個空指針異常喜歡這個

Process: com.example.nirmal.sportsparse, PID: 15097 
java.lang.NullPointerException 
     at com.example.nirmal.sportsparse.search_players$2.done(search_players.java:108) 
     at com.example.nirmal.sportsparse.search_players$2.done(search_players.java:99) 
     at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:115) 
     at android.os.Handler.handleCallback(Handler.java:808) 
     at android.os.Handler.dispatchMessage(Handler.java:103) 
     at android.os.Looper.loop(Looper.java:193) 
     at android.app.ActivityThread.main(ActivityThread.java:5292) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 
     at dalvik.system.NativeStart.main(Native Method) 
輸入

錯誤代碼說明for循環內的findInBackground()和 中有一個NULL指針。我相信我給出的輸入必須檢索至少2個元組。

有時也拋出這個錯誤,我不知道這是什麼意思

libcore.io.ErrnoException: close failed: EBADF (Bad file number) 
     at libcore.io.Posix.close(Native Method) 
     at libcore.io.BlockGuardOs.close(BlockGuardOs.java:75) 
     at com.android.internal.os.ZygoteInit.closeServerSocket(ZygoteInit.java:220) 
     at com.android.internal.os.ZygoteConnection.handleChildProc(ZygoteConnection.java:879) 
     at com.android.internal.os.ZygoteConnection.runOnce(ZygoteConnection.java:242) 
     at com.android.internal.os.ZygoteInit.runSelectLoop(ZygoteInit.java:700) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636) 
     at dalvik.system.NativeStart.main(Native Method) 

陣列被聲明如下

String name,mail[]=new String[100],uname[]=new String[100];

誰能告訴我在哪裏,我錯了? ?

+0

什麼 '我' 值u宣佈在哪裏? –

+0

@RameshBhupathi i在try塊之前被初始化。看起來我在粘貼代碼時沒有複製它。但它在那裏,並初始化爲0. –

+0

檢查數組的聲明,它更好地使用Arraylists而不是陣列 –

回答

1

在回調 「完成」 後,JSON API,通常允許2個步驟...

檢查元素存在

字符串化元素

注意

uname[i] = singleobject.get("username").toString(); 

改掉做它一次全部拋出異常,並在返回的解析對象中可能「未定義」的列上拋出異常。

檢查存在第一

然後字符串化