2013-06-19 8 views
9

.withIntent() का उपयोग करके कोई गतिविधि बनाना Robolectric 2 में काम नहीं करता है? मैं निम्नलिखितrobolectric 2 - इरादे के साथ गतिविधि बनाएं

activity = Robolectric.buildActivity(MyActivity.class) 
          .create() 
          .withIntent(intent) 
          .get(); 

कर रहा हूँ और जब कर मेरी गतिविधि के onCreate() में निम्नलिखित मैं एक NullPointerException हो रही है।

Bundle bundle = getIntent().getExtras(); 

मैं अपने onCreate() में एक अशक्त जांच कोड और निम्न कार्य करके इरादे सेट, लेकिन यह आशय की स्थापना की और जब Robolectric पहले से ही है कि Activity उदाहरण बनाते समय onCreate() विधि फिर से कॉल करने के लिए अनावश्यक प्रतीत कर सकते हैं। यह चारों ओर एक अनावश्यक काम की तरह लगता है।

Robolectric.shadowOf(activity).setIntent(intent); 
    activity.onCreate(null); 

उत्तर

3

मैं मेरी समस्या पता लगा। मैं Intent को ठीक से नहीं कर रहा था। मैं कोई आर्ग निर्माता के साथ यह instantiating गया था जब मैं एक Context देने की जरूरत और Activity के वर्ग यह

+0

आप एक संदर्भ कैसे प्राप्त करते हैं? –

+0

यहां क्या होता है: नया इरादा (Robolectric.application.getAplicationContext(), ??) –

+0

?? बनाई जा रही गतिविधि के साथ प्रतिस्थापित किया जाना चाहिए। तो MyActivity.class –

6

यह एक मामले में जहां सुराग तुम गलत पथ के एक धाराप्रवाह शैली API प्रकार ...

आप चाहते है:

activity = Robolectric.buildActivity(MyActivity.class) 
         .withIntent(intent) 
         .create() 
         .get(); 

ताकि इरादे को प्रदान की जाती है इससे पहले निर्माता इसे क्रिएट() पर कॉल करता है।

+0

मैंने पहले से ही कोशिश की है। मेरे लिए काम नहीं किया 'getIntent()' अभी भी मेरे लिए शून्य वापस लौटा – David

+0

यह मेरे लिए भी काम नहीं करता है इसलिए मैंने अभी अपनी माईएक्टिविटी बढ़ा दी है और क्रेट पर ओवरराइड किया है। वहां मैंने सेट इंटेंन्ट को एक नए इरादे से बुलाया। – user1055395

0

संपादित करें: यह संस्करण 2.2 में तय किया गया था।

मैंने एक ही मुद्दे से निपटाया। यह was reported लेकिन अभी तक कोई फिक्स उपलब्ध नहीं कराया गया है। अभी के लिए, मैं) onCreate बुला (इससे पहले कि गतिविधि के सेटर का उपयोग कर इसे हैक करने का प्रबंधन, इस तथ्य से लाभ लेने कि अपनी जीवन चक्र अभी तक शुरू नहीं हुआ है:

Intent intent = new Intent(); 
MainActivity mainActivity = Robolectric.buildActivity(MainActivity.class) 
             .create() 
             .get(); 
mainActivity.setIntent(intent); 
mainActivity.onCreate(null); 

3

के लिए भेजा जा रहा था के लिए Robolectric के नए संस्करण Robolectric.buildActivity(Class, Intent) का उपयोग करें।

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