我正在开发一个使用Kinvey作为后端的应用程序。我得到的问题是,当我调用kinvey appData请求时,控件不会进入kinvey调用的onsuccess方法并返回到调用方法位置。 这是我的主要类,我调用的函数有kinvey客户端调用来获取数据。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ac_image_list);
// kinvey login here//
// here is the function that fetch my data from kinvey
GetAllCategory();
imageUrls=urls // this is the assignment that cause Null pointer Exception
}
现在这里是我的GetAllCategories函数
public void GetAllCategory(){
AsyncAppData<EntityCategories> myEvents=mKinveyClient.appData("categories", EntityCategories.class);
myEvents.get(new Query(), new KinveyListCallback<EntityCategories>(){
@Override
public void onFailure(Throwable error) {
// TODO Auto-generated method stub
Log.e(TAG, "failed to save event data", error);
}
@Override
public void onSuccess(EntityCategories[] result1) {
// TODO Auto-generated method stub
// Log.e(TAG,"Name is "+result1[0].get("name"));
// Log.e(TAG,"type is"+result1[0].get("type"));
categories=result1;
//onPrintCategoryClick();
for(int i=0;i<categories.length;i++){
imageUrls[i]=(String) categories[i].get("icon");
}
}
});
}
但是控制会在执行kinvey调用之后返回oncreate方法,并且不会转到onSuccess方法。执行完整的oncreate方法后,它会回到onSuccess。但直到那时应用程序因NUll指针异常而崩溃。
请原谅我糟糕的形成,问我是否要你解释更多。预期的谢谢答案 0 :(得分:0)
迟到的答案,但只是在其他人看来的情况下:
从名称 - AsyncAppData可以清楚地看出,获取数据的Kinvey调用是异步执行的。
最好的办法是在onSuccess方法中分配网址。在此之前,您应该显示一个进度对话框,让用户知道发生了什么。