Reputation: 10738
Does creating an activity using the .withIntent()
not work in Robolectric 2? I'm doing the following
activity = Robolectric.buildActivity(MyActivity.class)
.create()
.withIntent(intent)
.get();
And i'm getting a NullPointerException
when doing the following in the onCreate()
of my activity.
Bundle bundle = getIntent().getExtras();
I can code a null check in my onCreate()
and set the intent by doing the following but it seems redundant to set the intent and call the onCreate()
method again when Robolectric already does that when creating the Activity
instance. This seems like an unnecessary work around.
Robolectric.shadowOf(activity).setIntent(intent);
activity.onCreate(null);
Upvotes: 10
Views: 5272
Reputation: 17825
For newer versions of Robolectric use Robolectric.buildActivity(Class, Intent)
.
Upvotes: 6
Reputation: 1325
EDIT: It was fixed in version 2.2.
I tackled with the same issue. It was reported but no fix has been provided yet. For now, I manage to hack it using Activity's setter before calling onCreate(), taking advantage from the fact that its lifecycle has not yet started:
Intent intent = new Intent();
MainActivity mainActivity = Robolectric.buildActivity(MainActivity.class)
.create()
.get();
mainActivity.setIntent(intent);
mainActivity.onCreate(null);
Upvotes: 0
Reputation: 10738
I figured out my problem. I wasn't instantiating the Intent
properly. I was instantiating it with the no-arg constructor when i needed to give a Context
and the class of the Activity
it was being sent to
Upvotes: 3
Reputation: 6062
This is a case where a fluent-style API kinds of leads you down the wrong path...
You want to:
activity = Robolectric.buildActivity(MyActivity.class)
.withIntent(intent)
.create()
.get();
so that the intent is provided to the builder before it calls onCreate().
Upvotes: 6