2012-09-30 11 views
13

Voglio iniziare una nuova attività in classe non-Attività che implementa un DialogListener seguente è il mio codice:intraprendere una nuova attività da classe non Activity

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 
    } 
} 

non posso iniziare la nuova attività con l'intento di Metodo onComplete, per favore aiuto.

Grazie

+0

cercare di cambiare "questo" a getApplicationContext(), o passare il contesto da un'attività –

+0

Nota che voglio avviare l'attività quando login fatto con successo questo è il motivo per cui ho iniziato l'attività nel metodo onComplete – Nadeem

+0

. Ho modificato questo comportamento con getApplicationContext(), ma non è stato possibile risolvere il mio problema. Puoi dire esattamente come dovrei passare il contesto da un'attività? SearchActivity è l'attività che desidero avviare – Nadeem

risposta

21

Questo non funziona perché avete bisogno di un Context al fine di avviare una nuova attività. Puoi riorganizzare la tua classe in qualcosa del genere:

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... 
} 

Quindi funzionerà. contesto

+0

Sarei preoccupato per la provenienza del contesto nel costruttore. Would (Activity) .getContext() essere migliore? – Simon

+1

@Simon Non esiste un metodo 'Activity.getContext()', l'attività è già un contesto. – Malcolm

+0

Hmm. 13 ore di lavoro e troppo vino con cena. So cosa volevo dire, che era sia sbagliato sia come composto, erroneamente espresso. È ora di chiamarlo per uscire la notte ... – Simon

9

Passo come parametro del costruttore e poi provare questo

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

Funziona su Samsung s4 ma non su Galaxy Note 2 !! eventuali suggerimenti –

Problemi correlati