2014-12-06 1 views
2
ParseObject current; 
... 
ParseQuery<ParseObject> query = ParseQuery.getQuery("Primary"); 
    try{ 
     if(current == null){ 
      System.out.println("current is NULL");     //prints properly 
      System.out.println("Initial query: " + query.count()); //prints 'Initial Query: 90' 
      query.whereDoesNotExist("Parent4"); 
      System.out.println("Test1");        //prints properly 
      System.out.println("Query Count: " + query.count());  //seems to cause nullpointer 
      List<ParseObject> list = query.find(); 
      System.out.println("Test2"); 
      for(ParseObject p: list){ 
       listItems.add((String)p.get("Title")); //listItems used to populate listview when listview is generated 

...(closing brackets,else statement, exception catching, rest of program) 

"Parent4"(관계) 필드에 빈 관계가있는 모든 항목에 대해 "Primary"라는 구문 분석 데이터베이스를 검색하여이를 내 문자열 목록 (listItems)에 표시하려고합니다. 그것이 생성 될 때 listView에 추가됩니다. 내 데이터베이스에있는 객체 중 두 개는 아무 관계도 없다는 것을 알고 있으므로 두 객체의 제목을 표시하고 싶습니다. 이 두 가지 객체가 동일한 제목을 가지고있을 때 나중에 프로그램에서 문제를 일으키는 객체 자체 대신 목록에서 각 객체의 제목을 확인한다는 점만 제외하면이 기능은 다소 잘 작동했습니다. 그건 내 프로그램에서 받아 들여야한다.개체 관계가 비어 있는지 확인하는 방법?

왜 "query.whereDoesNotExist ("Parent4 ");" 내가 쿼리의 수를 인쇄하고 싶을 때 null 포인터 예외를 일으키는 것 같다? 아니면 어떻게하면이 문제를 해결할 수 있을지 생각해보십시오.

12-06 18:20:50.030: I/Process(2469): Sending signal. PID: 2469 SIG: 9 
12-06 18:20:57.740: I/System.out(2517): current is NULL 
12-06 18:20:58.159: I/System.out(2517): Initial query: 92 
12-06 18:20:58.159: I/System.out(2517): Test1 
12-06 18:20:58.378: D/AndroidRuntime(2517): Shutting down VM 
12-06 18:20:58.379: E/AndroidRuntime(2517): FATAL EXCEPTION: main 
12-06 18:20:58.379: E/AndroidRuntime(2517): Process: com.parse.starter, PID: 2517 
12-06 18:20:58.379: E/AndroidRuntime(2517): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.parse.starter/com.parse.starter.ParseStarterProjectActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONObject.optInt(java.lang.String)' on a null object reference 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at android.app.ActivityThread.access$800(ActivityThread.java:144) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at android.os.Handler.dispatchMessage(Handler.java:102) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at android.os.Looper.loop(Looper.java:135) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at android.app.ActivityThread.main(ActivityThread.java:5221) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at java.lang.reflect.Method.invoke(Native Method) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at java.lang.reflect.Method.invoke(Method.java:372) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
12-06 18:20:58.379: E/AndroidRuntime(2517): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONObject.optInt(java.lang.String)' on a null object reference 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at com.parse.ParseQuery$18.then(ParseQuery.java:1014) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at com.parse.ParseQuery$18.then(ParseQuery.java:1011) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$9.run(Task.java:444) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.completeImmediately(Task.java:440) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.access$100(Task.java:27) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$5.then(Task.java:307) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$5.then(Task.java:304) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.runContinuations(Task.java:506) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.access$600(Task.java:27) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$TaskCompletionSource.trySetError(Task.java:577) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$TaskCompletionSource.setError(Task.java:604) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$10$1.then(Task.java:487) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$10$1.then(Task.java:481) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$9.run(Task.java:444) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.completeImmediately(Task.java:440) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.continueWith(Task.java:314) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.continueWith(Task.java:325) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$10.run(Task.java:481) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.completeAfterTask(Task.java:473) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.access$200(Task.java:27) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$6.then(Task.java:342) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$6.then(Task.java:339) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.runContinuations(Task.java:506) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.access$600(Task.java:27) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$TaskCompletionSource.trySetError(Task.java:577) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at com.parse.ParseRequest$4.then(ParseRequest.java:350) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at com.parse.ParseRequest$4.then(ParseRequest.java:344) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$10.run(Task.java:477) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.completeAfterTask(Task.java:473) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.access$200(Task.java:27) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$6.then(Task.java:342) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$6.then(Task.java:339) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.runContinuations(Task.java:506) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.access$600(Task.java:27) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$TaskCompletionSource.trySetError(Task.java:577) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$TaskCompletionSource.setError(Task.java:604) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$10$1.then(Task.java:487) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$10$1.then(Task.java:481) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$9.run(Task.java:444) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.completeImmediately(Task.java:440) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.continueWith(Task.java:314) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.continueWith(Task.java:325) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$10.run(Task.java:481) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.completeAfterTask(Task.java:473) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.access$200(Task.java:27) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$6.then(Task.java:342) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$6.then(Task.java:339) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.runContinuations(Task.java:506) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task.access$600(Task.java:27) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$TaskCompletionSource.trySetResult(Task.java:561) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$TaskCompletionSource.setResult(Task.java:595) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$10$1.then(Task.java:489) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$10$1.then(Task.java:481) 
12-06 18:20:58.379: E/AndroidRuntime(2517):  at bolts.Task$9.ru 
12-06 18:20:58.379: D/Error(2517): ERR: exClass=java.lang.NullPointerException 
12-06 18:20:58.379: D/Error(2517): ERR: exMsg=Attempt to invoke virtual method 'int org.json.JSONObject.optInt(java.lang.String)' on a null object reference 
12-06 18:20:58.379: D/Error(2517): ERR: file=ParseQuery.java 
12-06 18:20:58.379: D/Error(2517): ERR: class=com.parse.ParseQuery$18 
12-06 18:20:58.379: D/Error(2517): ERR: method=then line=1014 
12-06 18:20:58.379: D/Error(2517): ERR: stack=java.lang.RuntimeException: Unable to start activity ComponentInfo{com.parse.starter/com.parse.starter.ParseStarterProjectActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONObject.optInt(java.lang.String)' on a null object reference 
12-06 18:20:58.379: D/Error(2517): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
12-06 18:20:58.379: D/Error(2517): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
12-06 18:20:58.379: D/Error(2517): at android.app.ActivityThread.access$800(ActivityThread.java:144) 
12-06 18:20:58.379: D/Error(2517): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
12-06 18:20:58.379: D/Error(2517): at android.os.Handler.dispatchMessage(Handler.java:102) 
12-06 18:20:58.379: D/Error(2517): at android.os.Looper.loop(Looper.java:135) 
12-06 18:20:58.379: D/Error(2517): at android.app.ActivityThread.main(ActivityThread.java:5221) 
12-06 18:20:58.379: D/Error(2517): at java.lang.reflect.Method.invoke(Native Method) 
12-06 18:20:58.379: D/Error(2517): at java.lang.reflect.Method.invoke(Method.java:372) 
12-06 18:20:58.379: D/Error(2517): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
12-06 18:20:58.379: D/Error(2517): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
12-06 18:20:58.379: D/Error(2517): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONObject.optInt(java.lang.String)' on a null object reference 
12-06 18:20:58.379: D/Error(2517): at com.parse.ParseQuery$18.then(ParseQuery.java:1014) 
12-06 18:20:58.379: D/Error(2517): at com.parse.ParseQuery$18.then(ParseQuery.java:1011) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$9.run(Task.java:444) 
12-06 18:20:58.379: D/Error(2517): at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.completeImmediately(Task.java:440) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.access$100(Task.java:27) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$5.then(Task.java:307) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$5.then(Task.java:304) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.runContinuations(Task.java:506) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.access$600(Task.java:27) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$TaskCompletionSource.trySetError(Task.java:577) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$TaskCompletionSource.setError(Task.java:604) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$10$1.then(Task.java:487) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$10$1.then(Task.java:481) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$9.run(Task.java:444) 
12-06 18:20:58.379: D/Error(2517): at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.completeImmediately(Task.java:440) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.continueWith(Task.java:314) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.continueWith(Task.java:325) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$10.run(Task.java:481) 
12-06 18:20:58.379: D/Error(2517): at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.completeAfterTask(Task.java:473) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.access$200(Task.java:27) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$6.then(Task.java:342) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$6.then(Task.java:339) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.runContinuations(Task.java:506) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.access$600(Task.java:27) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$TaskCompletionSource.trySetError(Task.java:577) 
12-06 18:20:58.379: D/Error(2517): at com.parse.ParseRequest$4.then(ParseRequest.java:350) 
12-06 18:20:58.379: D/Error(2517): at com.parse.ParseRequest$4.then(ParseRequest.java:344) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$10.run(Task.java:477) 
12-06 18:20:58.379: D/Error(2517): at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.completeAfterTask(Task.java:473) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.access$200(Task.java:27) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$6.then(Task.java:342) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$6.then(Task.java:339) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.runContinuations(Task.java:506) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.access$600(Task.java:27) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$TaskCompletionSource.trySetError(Task.java:577) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$TaskCompletionSource.setError(Task.java:604) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$10$1.then(Task.java:487) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$10$1.then(Task.java:481) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$9.run(Task.java:444) 
12-06 18:20:58.379: D/Error(2517): at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.completeImmediately(Task.java:440) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.continueWith(Task.java:314) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.continueWith(Task.java:325) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$10.run(Task.java:481) 
12-06 18:20:58.379: D/Error(2517): at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:97) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.completeAfterTask(Task.java:473) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.access$200(Task.java:27) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$6.then(Task.java:342) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$6.then(Task.java:339) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.runContinuations(Task.java:506) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task.access$600(Task.java:27) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$TaskCompletionSource.trySetResult(Task.java:561) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$TaskCompletionSource.setResult(Task.java:595) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$10$1.then(Task.java:489) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$10$1.then(Task.java:481) 
12-06 18:20:58.379: D/Error(2517): at bolts.Task$9.run(Task.java:444) 
12-06 18:20:58.379: D/Error(2517): at bolts.BoltsExecutors$ImmediateExecuto 
12-06 18:20:58.379: D/Error(2517): ERR: TOTAL BYTES WRITTEN: 13252 
+0

이 질문 있다고 할 수 있습니다 : 당신은 당신이 "query.whereDoesNotExist ("Parent4 ")가 무슨 뜻인지 명확히 할 수; " 내가 쿼리의 수를 인쇄하고 싶을 때 null 포인터 예외를 일으키는 것 같다? "어떤 라인에서 예외가 호출 되는가? – cjds

+0

뒤에 'whereDoesNotExist' 또는'count()'불행히도 잘 모르겠습니다. 내 일식 로그가 12-06 18 : 09 : 41.636 : D/AndroidRuntime (2121) : --------- 충돌 시작 12-06 18 : 09 : 41.659 : E/AndroidRuntime (2121) : 치명적인 예외 : 주 12-06 18 : 09 : 41.659 : E/AndroidRuntime (2121) : 프로세스 : com.parse.starter, PID : 2121 12-06 18 : 09 : 41.659 : E/AndroidRuntime (2121) : java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo {com.parse.starter/com.parse.starter.ParseStarterProjectActivity} : java.lang.NullPointerException : null 객체 참조에서 가상 메소드 'int org.json.JSONObject.optInt (java.lang.String)'을 호출하려고 시도했습니다. – user4333097

+0

오류 로그도 게시 할 수 있습니까? ? – cjds

답변

1

업데이트 : 여기

로그의 당신은 다음 방법을 통해

ParseQuery<RelationParse> innerQuery = ParseQuery.getQuery("Primary"); 
ParseQuery<TestParse> query = ParseQuery.getQuery("Primary"); 
query.whereDoesNotMatchQuery("Parent4", innerQuery); 
List<TestParse> listWithEmptyRelations = query.find(); 
+0

Parent4는 기본 클래스에 있으며 기본 클래스를 참조하므로 생각하지 않습니다. at'll는 일한다. 이런 쉬운 해결책이 아직도 있습니까? – user4333097

+0

그러면 내부 쿼리에서도 "Primary"를 사용해야합니다. – gio

+0

RelationParse 및 TestParse 란 무엇입니까? – user4333097

관련 문제