2013-02-28 27 views
0

我使用parse.com的服務下載,安卓指南:解析Android的上傳和

https://www.parse.com/docs/android_guide

,並沒有工作對我來說(我得到一個消息:應用程序必須是封閉的...)

這裏是我的代碼:

gameScore = new ParseObject("GameScore"); 
gameScore.put("score", 1337); 
gameScore.put("playerName", "Sean Plott"); 
gameScore.put("cheatMode", false); 
try { 
    gameScore.save(); 
} catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
gameScore.saveInBackground(new SaveCallback() { 
     public void done(ParseException e) { 
     // Access the object id here 
      objectId= gameScore.getObjectId(); 
     } 
    }); 

ParseQuery query = new ParseQuery("GameScore"); 

query.getInBackground(objectId, new GetCallback() { 

@Override 
public void done(ParseObject parseObject, ParseException arg1) { 
    // TODO Auto-generated method stub 
    int score= parseObject.getInt("score"); 
    Integer i =new Integer(score); 
    t1.setText(i.toString()); 
} 
}); 

而這裏的logcat:

02-28 09:59:10.552: E/AndroidRuntime(773): FATAL EXCEPTION: main 
02-28 09:59:10.552: E/AndroidRuntime(773): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.salebook/com.example.salebook.MainActivity}: java.lang.NullPointerException 
02-28 09:59:10.552: E/AndroidRuntime(773): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
02-28 09:59:10.552: E/AndroidRuntime(773): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
02-28 09:59:10.552: E/AndroidRuntime(773): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
02-28 09:59:10.552: E/AndroidRuntime(773): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
02-28 09:59:10.552: E/AndroidRuntime(773): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-28 09:59:10.552: E/AndroidRuntime(773): at android.os.Looper.loop(Looper.java:137) 
02-28 09:59:10.552: E/AndroidRuntime(773): at android.app.ActivityThread.main(ActivityThread.java:5041) 
02-28 09:59:10.552: E/AndroidRuntime(773): at java.lang.reflect.Method.invokeNative(Native Method) 
02-28 09:59:10.552: E/AndroidRuntime(773): at java.lang.reflect.Method.invoke(Method.java:511) 
02-28 09:59:10.552: E/AndroidRuntime(773): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
02-28 09:59:10.552: E/AndroidRuntime(773): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
02-28 09:59:10.552: E/AndroidRuntime(773): at dalvik.system.NativeStart.main(Native Method) 
02-28 09:59:10.552: E/AndroidRuntime(773): Caused by: java.lang.NullPointerException 
02-28 09:59:10.552: E/AndroidRuntime(773): at com.example.salebook.MainActivity.onCreate(MainActivity.java:69) 
02-28 09:59:10.552: E/AndroidRuntime(773): at android.app.Activity.performCreate(Activity.java:5104) 
02-28 09:59:10.552: E/AndroidRuntime(773): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
02-28 09:59:10.552: E/AndroidRuntime(773): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
02-28 09:59:10.552: E/AndroidRuntime(773): ... 11 more 

此外,當我在調試模式下,我看到objectId爲空,雖然我可以在服務器中看到該對象成功地上升與問題,並且它有一個有效的objectId。

此外,當我在gameScore對象看在Eclipse中我可以看到它具有相同的OBJECTID在服務器上,但它再次

感謝

回答

0

那麼,什麼是返回我空的OBJECTID你正在執行saveInBackground,它開始於一個新的線程。然後,您將立即使用null objectId調用query.getInBackground。您需要等待並在gameScore.saveInBackground中完成調用後調用query.getInBackground。

我建議將第二個調用移動到上面的gamerScore.saveInBackground執行中的done函數調用。你還必須考慮保存可能會失敗,所以你要捕獲異常如下:

public void done(List<ParseObject> items, ParseException e) { 
    if (e == null) { 
     //execute query here 
    } else { 
     //handle exception here 
    } 

}