2015-08-14 1 views
1

J'essaie de trouver une méthode pour vous connecter à mon compte Parse soit mon email ou mon nom d'utilisateur, et je frappe un peu un accroc.Types incompatibles - Android, Parse.com

est ici le code,

   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"); 
            } 
           } 
          }); 
        }} 
       }); 

      } 

les String actualUsername = object.get("username"); montre comme en type compatible.

Comment puis-je résoudre ce problème? merci.

+0

Je ne sais rien au sujet de Parse mais si 'object.get ("nom d'utilisateur")' retourne un 'Object' vous devriez jeter à' CHAINE' comme ceci: 'String actualUsername = (String) object.get (" nom d'utilisateur ");' – GSala

+0

@GSala J'ai oublié de changer ParseObject en ParseUser quand j'ai utilisé le code. Ça marche maintenant! Merci Quoi qu'il en soit, – Chehanr

Répondre

2

regardant la documentation Parse, il y a la méthode ParseObject::getString(String key):

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

Je parie que vous devriez l'utiliser:

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

ou faire un casting comme celui-ci:

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

Nope ne fonctionne toujours pas. Maintenant, il retourne « Parsequery ne peut pas être appliquée à (anonyme com.parse.GetCallback ) @pelotasplus – Chehanr

+0

mais dans un endroit différent, non? Je dirais d'aller lire la documentation officielle https://www.parse.com/docs/android/guide#users-logging-in il y a des exemples de code, il – pelotasplus

+1

idiot moi, je l'ai oublié de changer ParseObject à ParseUser quand je J'ai utilisé le code. Ça marche maintenant! – Chehanr

0

J'ai oublié de changer le ParseObject t o ParseUser quand j'ai appliqué le code! Maintenant, ça marche bien.

Le code Mise à jour:

  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"); 
            } 
           } 
          }); 
         }} 
       }); 

      }