1

Quería saber cómo puedo hacer para que si response es igual al id de Facebook, vaya a un activity, y que de lo contrario vaya a otro activity.

Cuando intento con:

if (profil.getId().toString() == response)

y corro mi aplicación, me sale un cartel de que se detuvo la aplicación. ¿Alguien me podría ayudar por favor?

Código:

  public class MainoRegistro extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_maino_registro);

             final Profile profil = Profile.getCurrentProfile();
            RequestQueue queue = Volley.newRequestQueue(this);
            final String URL = "http://midominio.com/consulta.php?facebookid="+profil.getId().toString();
            StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    response = response.replaceAll("\"","").replace("]","").replace("[","");

            if (response == profil.getId()){
                Registrado();

            }else {
                registro();
            }


                }

            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    LoginManager.getInstance().logOut();
                    IrPantallaLogin();
                }
            });
            queue.add(stringRequest);
        }

private void registro() {

    Intent intent = new Intent(MainoRegistro.this,Registro.class);
    finish();
    startActivity(intent);
}

private void Registrado() {
    Intent intent = new Intent(MainoRegistro.this,MainActivity.class);
    finish();
    startActivity(intent);

}

ahora que coloco el metodo .trim() se detiene la app y en el logcat me dice lo siguiente:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mathiastoledo.talkit/com.mathiastoledo.tal‌​kit.MainoRegistro}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.facebook.Profile.getId()' on a null object reference

Jorgesys
  • 103,630
  • 13
  • 52
  • 124
Mathias Toledo
  • 63
  • 1
  • 1
  • 8
  • ¿Podrías compartir lo que te aparece en el `logcat` cuando te sucede esto para poder ayudarte mejor? – Jorius Jan 05 '17 at 21:34
  • 1
    @sstan Hola, es una parte del problema, la otra parte del problema es que no cambia de Activity por alguna razón, pero necesita agregar el OP más info. – Jorgesys Jan 05 '17 at 21:54
  • Donde tratas de abrir la Activity? podrías agregar esa parte y el LogCat con el problema @MathiasToledo – Jorgesys Jan 05 '17 at 21:55
  • @Elenasys: ok, gracias por aclarar. Retiro el voto, pero dejo el comentario como referencia. – sstan Jan 05 '17 at 22:00
  • 1
    Grracias a todos jajaja, perdon por ser tan cavernicola – Mathias Toledo Jan 05 '17 at 22:05
  • 1
    Esta pregunta no debió ser cerrada como duplicado ya que eran varios detalles los cuales impedían se realizara el Intent, y no solo la comparación de Strings... en fin.⤜(ʘ_ʘ)⤏ – Jorgesys Jan 06 '17 at 20:48

1 Answers1

4

El problema visible parece ser la comparación de los dos strings, no debes realizarlo mediante el operador == :

if (profil.getId().toString() == response)

Debes comparar los strings mediante el método equals() y de esta forma cuando son iguales, realizar un Intent para abrir la Activity que deseas, recuerda que todas las Activity deben estar registradas en el AndroidManifest.xml

Se puede hacer uso del método trim() para eliminar los posibles espacios.

Para abrir otra Activity puedes realizarlo mediante un Intent:

if (profil.getId().toString().equals(response.trim())){
        //Abre otra Activity.
        Intent myIntent = new Intent(Activity.this, OtraActivity.class);
        startActivity(myIntent);
}

El error posterior:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mathiastoledo.talkit/com.mathiastoledo.tal‌​kit.MainoRegistro}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.facebook.Profile.getId()' on a null object reference

se genera ya que la variable profil tiene un valor null.

Jorgesys
  • 103,630
  • 13
  • 52
  • 124
  • gracias! pero tengo un problema con eso – Mathias Toledo Jan 05 '17 at 22:12
  • en mi DB tengo ya un id registrado, pero aun asi me manda al activity else . if (profil.getId().toString().equals(response)){ //Abre otra Activity. Intent myIntent = new Intent(MainoRegistro.this, MainActivity.class); finish(); startActivity(myIntent); } else { Intent otro = new Intent(MainoRegistro.this, Registro.class); finish(); startActivity(otro); } – Mathias Toledo Jan 05 '17 at 22:13
  • y response tiene el id de facebook que comentas? si es así agrega el método .trim() como agrego en mi respuesta. – Jorgesys Jan 05 '17 at 22:47
  • sisi, ahora que coloco el metodo .trim() se detiene la app y en el logcat me dice lo siguiente: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mathiastoledo.talkit/com.mathiastoledo.talkit.MainoRegistro}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.facebook.Profile.getId()' on a null object reference – Mathias Toledo Jan 05 '17 at 22:58
  • El error es que profil tiene valor null! asegura corregir eso. – Jorgesys Jan 05 '17 at 23:11
  • En futuras ocasiones, por favor votar a cierre como duplicado de: http://es.stackoverflow.com/q/225/227 –  Jan 06 '17 at 20:40