2014-10-08 66 views
2

我是新來的匕首,我試圖通過玩耍並創建小型Android應用程序來研究它。 我有一個應用程序類是這樣的:用匕首注入的值爲空

class App extends Application { 
    @Override onCreate() { 
    super.onCreate(); 
    ObjectGraph objectGraph = ObjectGraph.create(new AppModule(this)); 
    objectGraph.inject(this); 
    } 
} 

和模塊是這樣的:

@dagger.Module(injects = {App.class, MainActivity.class}) 
public class AppModule { 
    private App app; 
    public AppModule(App app) { this.app = app; } 
    @Provides @Singleton App provideApp(){ return app; } 
} 

和活動,其中應用注入:

public class MainActivity extends Activity { 
    @Inject App app; 

    @Override onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    if(app == null) 
     Toast.makeText(this, "app is null", 1000).show(); 
    } 
} 

我的應用程序清單文件,分配和斷點int App.onCreate()被觸發。

我錯過了什麼嗎?有誰能告訴我爲什麼它是空的?謝謝。

回答

3

您的'MainActivity'需要調用在應用程序中創建的ObjectGraph#Inject方法。

您可以檢查此:https://github.com/square/dagger/tree/master/examples/android-simple或本https://github.com/square/dagger/tree/master/examples/android-activity-graphs

+0

哦,謝謝!爐排幫助! – 2014-10-08 16:40:13

+1

奇怪的是,在我的情況下,一個類獲得了注入成員罰款,而另一個沒有。兩者都由ObjectGraph提供。 – 2015-04-07 14:57:59