2015-06-14 142 views
1

我試圖讓使用解析一個Android應用程序,允許使用一個或者他們的用戶名或電子郵件進行登錄。我試圖查詢獲取提供的電子郵件地址的對象,然後獲取該對象的用戶名以登錄。然而,我得到這個錯誤:的Android解析登錄使用電子郵件或用戶名

'getFirstInBackground(com.parse.GetCallback)' in 'com.parse.ParseQuery' cannot be applied to '(anonymous com.parse.GetCallback "com.parse.ParseObject>)'

我是新的應用程序開發和解析,所以我不完全確定這是什麼意思。從我理解它不會讓我使用getFirstInBackground,因爲它適用於parseUser的,我正在使用ParseObjects,但我使用的代碼從以前的計算器問題中拉出,這是一個工作答案:Login username AND email in Parse Android

Here是我的代碼:

  // Do this to allow for username or email log in 
     if (mEmail.indexOf("@") != -1) { 
      ParseQuery<ParseUser> query = ParseUser.getQuery(); 
      query.whereEqualTo("email", mEmail); 
      query.getFirstInBackground(new GetCallback<ParseObject>() { 
       public void done(ParseObject object, ParseException e) { 
        if (object == null) { 
         Log.d("score", "The getFirst request failed."); 
        } else { 

         String actualUsername = object.getString("username"); 
         ParseUser.logInInBackground(actualUsername, mPassword, new LogInCallback() { 
          @Override 
          public void done(ParseUser parseUser, ParseException e) { 
           if (e != null) { 
            // TODO: Show error message 
            Toast.makeText(LoginActivity.this, "Credentials incorrect", Toast.LENGTH_LONG).show(); 
           } else { 
            // Start Intent for activity 
            // TODO: Choose activity 
            Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
            startActivity(intent); 
           } 
          } 
         }); 
        } 
       } 
      }); 

回答

1

docs,該方法的簽名如下:

class com.parse.ParseQuery<T> { 
    public void getFirstInBackground(GetCallback<T> callback) 
} 

這意味着,通用型的GetCallback必須是一樣的你r ParseQuery。這大概應該是

query.getFirstInBackground(new GetCallback<ParseUser>()) { /* ... */ } 
0

您正試圖查詢ParseUserParseObject類型的GetCallBack

在你的代碼ParseUser替換的ParseObject所有實例。

0
query.getFirstInBackground(new GetCallback<ParseUser>() { 
        public void done(ParseUser user, ParseException e) { 
         if (object == null) { 
          Log.d("score", "The getFirst request failed."); 
         } else { 

          String actualUsername = user.getUsername(); 
          ParseUser.logInInBackground(actualUsername, mPassword, new LogInCallback() { 
           @Override 
           public void done(ParseUser parseUser, ParseException e) { 
            if (e != null) { 
             // TODO: Show error message 
             Toast.makeText(LoginActivity.this, "Credentials incorrect", Toast.LENGTH_LONG).show(); 
            } else { 
             // Start Intent for activity 
             // TODO: Choose activity 
             Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
             startActivity(intent); 
            } 
           } 
          }); 
         } 
        } 
       }); 

希望這有助於

+0

感謝@Ye敏Htut,沒有更多的錯誤。 – Pseduosance

0
final String userOrEmal = editTextEmailOrUserName.getText().toString().trim(); 
final String mpassword = editTextPassword.getText().toString().trim(); 

      if (userOrEmal.contains("@")) { 

       ParseQuery<ParseUser> query = ParseUser.getQuery(); 
       query.whereEqualTo("email", userOrEmal); 
       query.getFirstInBackground(new GetCallback<ParseUser>() { 
        @Override 
        public void done(ParseUser object, ParseException e) { 
         if (object != null) { 

          ParseUser.logInInBackground(object.getString("username"), mpassword, new LogInCallback() { 
           public void done(ParseUser user, ParseException e) { 
            if (user != null) { 

             Log.v("login", "secessful"); 
            } else { 

             Log.v("login", "fail"); 
            } 
           } 
          }); 
         } else { 

         } 


        } 
       }); 



      } else { 
       ParseUser.logInInBackground(userOrEmal,mpassword, new LogInCallback() { 
        public void done(ParseUser user, ParseException e) { 
         if (user != null) { 

          Log.v("login", "secessful"); 
         } else { 

          Log.v("login", "fail"); 
         } 
        } 
       }); 
      } 
相關問題