2012-09-30 15 views
13

से एक नई गतिविधि शुरू मुझे लगता है कि एक DialogListener निम्नलिखित लागू करता है गैर गतिविधि कक्षा में एक नई गतिविधि शुरू करना चाहते हैं मेरे कोड है:गैर गतिविधि वर्ग

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

मैं में अभिप्राय का उपयोग करके नई गतिविधि शुरू नहीं कर सकते onComplete विधि, कृपया मदद करें।

धन्यवाद

+0

कोशिश "इस" getApplicationContext(), करने के लिए या से एक गतिविधि –

+0

नोट संदर्भ है कि मैं गतिविधि शुरू करने के लिए जब लॉगिन सफलतापूर्वक किया चाहते पारित यही कारण है कि मैंने पूर्ण विधि – Nadeem

+0

पर गतिविधि शुरू कर दी है। मैंने इसे एपप्लिकेशन कॉन्टेक्स्ट() प्राप्त करने के लिए बदल दिया है, लेकिन यह मेरी समस्या का समाधान नहीं कर सका। क्या आप बता सकते हैं कि मुझे गतिविधि से संदर्भ कैसे पारित करना चाहिए? SearchActivity वह गतिविधि है जिसे मैं – Nadeem

उत्तर

21

इसका कारण यह है कि आप के लिए एक नई गतिविधि शुरू करने के लिए एक Context जरूरत है काम नहीं करता। आप अपनी कक्षा को इस तरह कुछ पुनर्गठित कर सकते हैं:

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

फिर यह काम करेगा। निर्माता पैरामीटर के रूप में

+0

शुरू करना चाहता हूं, मैं इस बारे में चिंतित हूं कि कन्स्ट्रक्टर में संदर्भ कहां से आया था। नहीं होगा (गतिविधि) .getContext() बेहतर हो? – Simon

+1

@ सिमॉन कोई 'गतिविधि .getContext() 'विधि नहीं है, गतिविधि पहले से ही एक संदर्भ है। – Malcolm

+0

हम्म। रात्रिभोज के साथ 13 घंटे काम और बहुत अधिक शराब। मुझे पता है कि मेरा क्या मतलब था, जो गलत और गठबंधन दोनों मामलों में गलत तरीके से व्यक्त किया गया था। इसे कॉल करने का समय रात के लिए छोड़ देता है ... – Simon

9

दर्रा संदर्भ और फिर बदलने की कोशिश इस

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

यह सैमसंग एस 4 पर काम करता है लेकिन गैलेक्सी नोट 2 में नहीं !! कोई सुझाव –

संबंधित मुद्दे