2015-06-14 101 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"); 
         } 
        } 
       }); 
      } 
相关问题