2014-10-08 10 views
2

Я новичок в кинжале, и я пытаюсь изучить его, играя вокруг и создавая небольшое приложение для Android. У меня есть класс приложений, как это:Значение, введенное кинжалом, равно null

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(); 
    } 
} 

My App назначенную в файле манифеста и контрольные точки 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

ой, спасибо !! помогите! –

+1

Странно, в моем случае один класс получил впрыснутых членов, а другой - нет. Оба они обслуживаются ObjectGraph. –

Смежные вопросы