2013-11-15 1 views
1

Cloud Endpoints를 사용하여 App Engine에서 Android로 데이터를 가져옵니다. 생성 된 라이브러리를 사용하여 객체 목록을 검색합니다. 이것은 잘 작동하는 것처럼 보입니다. 객체를 기록하면 json이 보입니다. 그러나 객체에 getX()를 사용하면 NPE를 얻습니다. Java GAE 1.8.7. 액티비티에서 AsycTask에서이를 수행합니다.Appengine Cloud Endpoints : NPE on 모델 객체의 메소드 가져 오기

 Builder builder = new Builder(AndroidHttp.newCompatibleTransport(), 
       new GsonFactory(), null); 
     MyObjectOperations service = builder.build().myobject(); 
     MyObjectCollection tmp = null; 

     GetMyObjects it = service.getMyObjects(); 
     tmp = it.execute(); 
     listOfMyObjects = tmp.getItems(); 

     MyObject test=listOfMyObjects.get(0); 
     test.getMyField();  //NPE here - on every field 

무엇이 발생할 수 있습니까 ?? listOfMyObjects가 올바른 크기입니다. 이전에이 클라이언트 lib를 사용했고 효과가있었습니다. 이제 업데이트 된 버전입니다. 어떤 도움이라도 좋을 것입니다! 당신의 listOfMyObjectsArrayList<> 또는 다른 Iterable의 인스턴스가 아닌 경우 목록이 인덱싱되지 않는

답변

1

get(0)는, null를 돌려줍니다. 따라서 목록에 n 개의 항목이 있더라도 순서가 지정되어 있지 않으므로 특정 n 번째 항목이 없습니다.

이 같은 ArrayList 만들기 :
listOfMyObjects = new ArrayList<myObject>(tmp.getItems()); 

그런 다음 get(0) 작동합니다.

관련 문제