2015-12-06 3 views
0

Я встречаюсь с проблемой в моем текущем приложении, приложение содержит следующую систему/следящую систему, когда я смотрю на профиль пользователя. Я хочу получить информацию, если я уже буду следовать за этим пользователем или нет. это мой кодAndroid parse.com проверить, существует ли объект

private class CheckinIfFollowing extends AsyncTask<Void, Void, Void> { 
       @Override 
       protected void onPreExecute() { 
        super.onPreExecute(); 
        //preexcution 
       } 

       @Override 
       protected Void doInBackground(Void... params) { 
        ParseQuery<ParseObject> query = ParseQuery.getQuery("Follow"); 
        query.whereEqualTo("from", ParseUser.getCurrentUser()); 
        query.whereEqualTo("to", userId); 
        query.getFirstInBackground(new GetCallback<ParseObject>() { 
         @Override 
         public void done(ParseObject object, ParseException e) { 
          if(e==null){ 
           Toast.makeText(UserProfil.this, "blue", Toast.LENGTH_SHORT).show(); 
           //btn_follow.setButtonColor(getResources().getColor(R.color.bleu)); 
          }else{ 
          if(e.getCode() == ParseException.OBJECT_NOT_FOUND) 
            { 
           Toast.makeText(UserProfil.this, "pink", Toast.LENGTH_SHORT).show(); 
           //btn_follow.setButtonColor(getResources().getColor(R.color.pink)); 
            } 
            else 
            { 
            //unknown error, debug 
            } 
           } 


         } 
        }); 

      return null; 
       } 

       @Override 
       protected void onPostExecute(Void result) { 
       // followingButton(AlreadyFollowing); 
       // btn_follow.setClickable(true); 
       } 
       } 

Я выполняю AsyncTask, но ничего не отображается на экране.

Btw столбцы «from» и «to» класса Follow в parse.com являются указателями на _User.

+0

не ParseQuery уже асинхронный? – CQM

ответ

0

Прежде всего (это не связано непосредственно с вашей проблемой, просто наблюдайте): если вы используете метод запроса <something>InBackground, вам не нужно его вводить в AsyncTask. Это уже выполняется в фоновом режиме. В вашем случае вы в основном (упрощая здесь), выполняете задачу async из задачи async.


Хотя вы не сказали, что хранится в userId объекте, я предполагаю (основано на его имя) что это objectId из ParseUser объекта и не сама ParseUser объекта. И я считаю, что это причина вашей проблемы. Эта линия, чтобы быть точной:

query.whereEqualTo("to", userId); 

Вы сказали:

Btw "из" и "в" столбце класса Follow в parse.com являются указателями на _User.

Если вы храните Pointer другой ParseObject вы должны, вероятно, передавая этот тип объекта, если вы используете это поле в запросе (и неobjectId - String). Поэтому в вашем случае вы должны передать экземпляр ParseUser вместо его objectId.

Чтобы создать объект (с objectId), вы можете использовать метод createWithoutDataParseObject, который вы можете использовать для вашего запроса.

Смежные вопросы