2014-09-12 4 views
1

Я разрабатываю приложение, используя Kinvey в качестве backend. Проблема, которую я получаю, заключается в том, что когда я вызываю запрос kinvey appData, тогда элемент управления не переходит в метод onsuccess вызова kinvey и возвращается обратно в место вызова метода. Вот мой основной класс, где я вызываю функцию, которая имеет клиентский вызов 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"); 

     } 

     } 


    }); 
    } 

но контроль восходит к OnCreate метод только после выполнения вызова kinvey и не идут к OnSuccess методы. После выполнения всего метода oncreate он возвращается к onSuccess. но до тех пор приложение получило сбой из-за исключения указателя NUll.

Прошу прощения за мое плохое образование, спросите меня, если хотите, чтобы я объяснил больше. Предвидимое благодаря

ответ

0

поздний ответ, но только в случае, кто-то приходит ищет:

Как ясно из названия - AsyncAppData, вызов Kinvey для получения данных выполняется асинхронно.

Лучше всего было бы присвоить URL-адреса методу onSuccess. До тех пор вы должны показать диалог прогресса, чтобы пользователь знал, что происходит.