2013-06-19 32 views
9

使用.withIntent()創建活動不適用於Robolectric 2嗎?我做了以下robolectric 2 - 用意圖創建活動

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

而且在做我的活動onCreate()以下時,我得到一個NullPointerException

Bundle bundle = getIntent().getExtras(); 

我可以代碼我onCreate()空校驗,並設置通過執行以下操作意圖,但它似乎是多餘的設置意圖並再次調用onCreate()方法時Robolectric已經做創建Activity實例時。這似乎是一個不必要的工作。

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

回答

3

我想通了,我的問題。我沒有正確實例化Intent。當我需要給ContextActivity它被髮送到

+0

如何獲取上下文? –

+0

這裏說的是:new Intent(Robolectric.application.getApplicationContext(),??) –

+0

??應該替換爲正在建立的活動。所以MyActivity.class –

6

這是一個流暢風格的API各種線索,你錯了路的...

你想要一個情況:

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

,這樣的意圖提供給調用onCreate()之前的構建器。

+0

我已經試過了。沒有爲我工作。 'getIntent()'對我而言仍然返回null – David

+0

它對我來說並不起作用,所以我只是擴展了MyActivity並覆蓋了onCreate。在那裏,我用一個新的意圖調用了setIntent。 – 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),我用無參數構造函數實例化它。