2015-08-14 49 views
1

我试图找出一种方法登录到我的解析帐户与我的电子邮件或我的用户名,我有点碰到一个障碍。不兼容的类型 - Android,Parse.com

下面的代码,

   if (username_email.indexOf('@') != -1) { 
       ParseQuery<ParseUser> query = ParseUser.getQuery(); 
       query.whereEqualTo("email", username_email); 
       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.get("username");//HERE!!!!!!!!! 
          ParseUser.logInInBackground(actualUsername, password, new LogInCallback() { 
           public void done(ParseUser user, ParseException e) { 
            if (user != null) { 
             // Hooray! The user is logged in. 
             Intent intent = new Intent(getBaseContext(), MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
             startActivity(intent); 
             finish(); 
            } else { 
             TextView error = (TextView) findViewById(R.id.error); 
             error.setVisibility(View.VISIBLE); 
             error.setText(getString(R.string.error_sign_in)); 

             Log.d("error", "email or password invalid"); 
            } 
           } 
          }); 
        }} 
       }); 

      } 

String actualUsername = object.get("username"); 节目作为In兼容型。

我该如何解决这个问题? 谢谢。

+0

我不知道解析,但如果'object.get(“用户名”)'返回任何一个'Object'你应该把它转换为'String'是这样的: 'String actualUsername =(String)object.get(“username”);' – GSala

+0

@GSala我忘了在使用代码时将ParseObject更改为ParseUser。它的工作现在!谢谢反正, – Chehanr

回答

2

望着解析文档,有ParseObject::getString(String key)方法:

https://www.parse.com/docs/android/api/com/parse/ParseObject.html#getString(java.lang.String)

我敢打赌,你应该使用它:

String actualUsername = object.getString("username"); 

或使铸像这样:

String actualUsername = (String) object.get("username"); 
+0

不行仍然无法正常工作。现在它返回'Parsequery不能应用于(匿名com.parse.GetCallback ) @pelotasplus – Chehanr

+0

但在不同的地方,对吧?我会说,去阅读官方文档https://www.parse.com/docs/android/guide#users-logging-in那里有代码示例 – pelotasplus

+1

愚蠢的我,我忘了将ParseObject更改为ParseUser当我已经使用了代码。它的工作现在! – Chehanr

0

我忘了更改ParseObject t o当应用代码时ParseUser!现在它运行良好。

更新的代码:

  if (username_email.indexOf('@') != -1) { 
       ParseQuery<ParseUser> query = ParseUser.getQuery(); 
       query.whereEqualTo("email", username_email); 
       query.getFirstInBackground(new GetCallback<ParseUser>() { 
        public void done(ParseUser object, ParseException e) { 
         if (object == null) { 
          Log.d("score", "The getFirst request failed."); 
         } else { 
          String actualUsername = (String) object.get("username"); 
          ParseUser.logInInBackground(actualUsername, password, new LogInCallback() { 
           public void done(ParseUser user, ParseException e) { 
            if (user != null) { 
             // Hooray! The user is logged in. 
             Intent intent = new Intent(getBaseContext(), MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
             startActivity(intent); 
             finish(); 
            } else { 
             TextView error = (TextView) findViewById(R.id.error); 
             error.setVisibility(View.VISIBLE); 
             error.setText(getString(R.string.error_sign_in)); 

             Log.d("error", "email or password invalid"); 
            } 
           } 
          }); 
         }} 
       }); 

      }