나는 목록 responseObject
과 목록을 얻었습니다 rootObject
. responseObject
목록은 새 항목 (등 제목, ID, 요약 개체)를 채우고 난 내에 추가 할됩니다 rootObject
목록하지만 난 오류가 발생합니다 :
java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference
두 목록 모두 이름이 지정된 결과입니다. 누구든지 내 항목을 추가하는 방법을 알고 있습니까? rootObject
이것은 코드입니다.
public void success(RootObject responseObject, Response response) {
rootObject.nextId = responseObject.nextId;
rootObject.results.add(responseObject.results.get(0));
}
답변을 확인했는데 responseObject
결과에 항목이 있습니다.
전체 코드 :
public class NewsController {
private RestAdapter restAdapter;
public RootObject rootObject = new RootObject();
public MainActivity ma;
static final String API_URL = "http://SECRETAPILINK.SECRET/api";
public void getNews(){
OkHttpClient mOkHttpClient = new OkHttpClient();
mOkHttpClient.setConnectTimeout(15000,TimeUnit.MILLISECONDS);
mOkHttpClient.setReadTimeout(15000, TimeUnit.MILLISECONDS);
restAdapter = new RestAdapter.Builder().setEndpoint(API_URL).setClient(new OkClient(mOkHttpClient)).setLogLevel(RestAdapter.LogLevel.FULL) .build();
GetNewsService service = restAdapter.create(GetNewsService.class);
Callback<RootObject> cb = new Callback<RootObject>() {
@Override
public void success(RootObject responseObject, Response response) {
Log.v("AASSAASS", responseObject.results.get(0).Title);
rootObject.nextId = responseObject.nextId;
rootObject.results.addAll(responseObject.results);
Log.v("AASSAASS", responseObject.results.get(0).Title);
}
@Override
public void failure(RetrofitError error) {
Log.v("AASSAA", error.toString());
}
};
service.GetNewsItems(cb);
}
}
rootObject.results
arrayList를 초기화하지 않았기 때문에 NPE가 발생합니다.
설명하기 위해 작은 예를 살펴 보겠습니다.
class Ideone
{
List<Integer> list;
public static void main (String[] args) throws java.lang.Exception
{
try {
Ideone id = new Ideone();
id.list = new ArrayList<Integer>();
id.list.add(1);
id.list.add(2);
Ideone copyId = new Ideone();
copyId.list = new ArrayList<Integer>();
copyId.list.addAll(id.list);
Ideone npeId = new Ideone();
npeId.list.add(id.list); //->nullpointerexception
} catch (NullPointerException e) {
System.out.println(e);
}
}
}
위의 예에서 초기화하지 않으면 npeId
NPE가 발생합니다.
코드에서 다음과 같은 것이 필요합니다.
rootObject.results = new ArrayList<...>();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다