1

내 프로젝트 AndroidAnnotations 및 Dagger에서 사용하고 있습니다.Android의 다른 클래스에보기 삽입

Dagger를 통해 다른 클래스에보기 (AndroidAnnotations를 통해 활동으로 주입 됨)를 삽입하고 싶습니다.

지금이 코드를 가지고,하지만 난 ActionBarDrawerToggle@Injection로 얻을 싶습니다 : 나는 이런 식으로 뭔가를했습니다

// MainActivity.java 
@EActivity(R.layout.activity_main) 
public class MainActivity extends ActionBarActivity { 

    @ViewById 
    DrawerLayout drawerLayout; 

    ActionBarDrawerToggle mMainDrawerToggle; 

    @AfterInject 
    void daggerInject() { 
     application.inject(this); 
    } 

    @AfterViews 
    void setupViews() { 
     mMainDrawerToggle = new ActionBarDrawerToggle(
       this, 
       drawerLayout, 
       R.drawable.ic_main_drawer, 
       R.string.main_drawer_open, 
       R.string.main_drawer_close); 
    } 
} 

하지만 단검을 얻는 방법을 모르기 때문에 작동하지 않습니다 DrawerLayout 객체입니다.

// ApplicationModule.java 
@Module(
     library = true, 
     injects = MainActivity_.class 
) 
public class ApplicationModule { 

    private final MyApp application; 

    public ApplicationModule(MyApp application) { 
     this.application = application; 
    } 

    @Provides 
    ActionBarDrawerToggle provideActionBarDrawerToggle(DrawerLayout drawerLayout) { 
     return new ActionBarDrawerToggle(
       application, 
       drawerLayout, 
       R.drawable.ic_main_drawer, 
       R.string.main_drawer_open, 
       R.string.main_drawer_close); 
    } 
} 
내가 ActionBarDrawerToggle이 단검으로 주입 될 것으로 만들 수있는 방법

?

답변

0

이것은 활동 자체에 대한 진정한 종속성처럼 보이지 않습니다. 활동은 자체보기에서 DrawerLayout을 만드는 활동입니다.

정말로해야한다면, 생성자에서 DrawerLayout 또는 Activity 종속성을 취하는 사용자 정의 ActivityModule을 만들 수 있습니다. 그러면 파편과 어린이의 견해를 공유하게됩니다.

@Module(...) 
public class ActivityModule { 

    private final Activity activity; 

    public ActivityModule(Activity activity) { 
    this.activity = activity; 
    } 

    @Provides 
    ActionBarDrawerToggle provideActionBarDrawerToggle() { 
    //create the toggle and return it here 
    } 
} 
0

는 내가 게임에 늦었 알고 있지만 문제는 당신이 필요 해요 ActionBarDrawerToggle mMainDrawerToggle;

0

우선 전에 @Inject 주석을 누락 것은 활동 모듈과 활동의 구성 요소입니다 here's how 단 하나의 활동 만하지 않는 한 그런 다음 단검 주입을하기 전에 토글을 인스턴스화해야합니다. 그게 당신을 위해 일하는 경우 :

활동의보기에 대한 getter를 만듭니다. 다음 모듈 : 지금

@Provides @Singleton 
    ActionBarDrawerToggle provideActionBarDrawerToggle() { 
    activity.getActionBarDrawerToggle() 
    } 

당신이 actionBarToggle를 주입 할 수

@Inject ActionBarToggle toggle;