2012-09-30 33 views
13

Quiero empezar una nueva actividad en clase no Actividad que implementa un DialogListener siguiente es mi código:Iniciar una nueva Actividad de clase no Actividad

public class FacebookLoginDialog implements DialogListener { 
    @Override 
    public void onComplete(Bundle values) { 
    HomeActivity.showInLog(values.toString()); 

    Intent i1 = new Intent (this, SearchActivity.class); 
    startActivity(i1); 
    } 

    @Override 
    public void onFacebookError(FacebookError e) { 
    // TODO Auto-generated method stub 
    } 

    @Override 
    public void onError(DialogError e) { 
    // TODO Auto-generated method stub 
    } 

    @Override 
    public void onCancel() { 
    // TODO Auto-generated method stub 
    } 
} 

No puedo iniciar la nueva actividad utilizando la intención de onComplete método, por favor ayuda.

Gracias

+0

tratar de cambiar "esto" a getApplicationContext(), o pasar el contexto de una actividad –

+0

Tenga en cuenta que quiero empezar la actividad cuando inicio de sesión a cabo con éxito es por eso que he comenzado la actividad en el método onComplete – Nadeem

+0

Lo he cambiado a getApplicationContext(), pero no pudo resolver mi problema. ¿Puedes decirme exactamente cómo debería pasar el contexto de una actividad? SearchActivity es la actividad que quiero iniciar – Nadeem

Respuesta

21

Esto no funciona porque se necesita una Context con el fin de iniciar una nueva actividad. Puede reorganizar su clase en algo como esto:

public class FacebookLoginDialog implements DialogListener { 
    private final Context context; 

    public FacebookLoginDialog(Context context) { 
    this.context = context; 
    } 

    @Override 
    public void onComplete(Bundle values) { 
    HomeActivity.showInLog(values.toString()); 

    Intent i1 = new Intent (context, SearchActivity.class); 
    context.startActivity(i1); 
    } 

    //Other methods... 
} 

entonces todo funcionará bien. contexto

+0

Me preocuparía saber de dónde viene el contexto en el constructor. ¿No sería (Activity) .getContext() mejor? – Simon

+1

@Simon No hay ningún método 'Activity.getContext()', la actividad ya es un contexto. – Malcolm

+0

Hmm. 13 horas trabajando y demasiado vino con la cena. Sé lo que quise decir, que era incorrecto y, para complicar las cosas, incorrectamente expresado. Es hora de dejar de fumar por la noche ... – Simon

9

pasar como parámetro de constructor y luego tratar este

Intent i = new Intent(this, SearchActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(i); 
+0

¡Funciona en Samsung s4 pero no en Galaxy Note 2! alguna sugerencia –

Cuestiones relacionadas