代码之家  ›  专栏  ›  技术社区  ›  Natesh bhat

如何使用dagger2forandroid将视图注入演示者?

  •  0
  • Natesh bhat  · 技术社区  · 6 年前

    inject 这个 view (Activity object) Presenter . 现在我正在使用Presenter类的setter手动设置视图。我怎么用匕首来达到这个目的?你能给我看一个如何做的示例代码吗?

    现在主活动就是这样创建演示者的

    public class MainActivity extends AppCompatActivity implements CountPresenter.View, ToastPresenter.View {
    
        @Inject
        CountPresenter countPresenter;
        @Inject
        ToastPresenter toastPresenter;
        TextView countText;
        Toast toast;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            countText = findViewById(R.id.text_count);
    
            DaggerToastPresenterComponent.create().inject(this);
            DaggerCountPresenterComponent.create().inject(this);
            countPresenter.setView(this);
            toastPresenter.setView(this) ;
    
            findViewById(R.id.button_count).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    countPresenter.incrementCount();
                }
            });
    
            findViewById(R.id.button_toast).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    toastPresenter.handleToastButtonClick();
                }
            });
        }
    }
    

    public class CountPresenter {
        private Counter counter ;
    
    
        public void setView(View view) {
            this.view = view;
        }
    
        private View view ;
    
        @Inject
        public CountPresenter() {
            counter =  Counter.getInstance() ;
        }
    
        public void incrementCount(){
            counter.setCount(counter.getCount()+1);
            view.setCounterText(counter.toString());
        }
    
        public interface View {
            void setCounterText(String val) ;
        }
    }
    

    完整代码:

    https://github.com/nateshmbhat/FresherAssignment2020/tree/nateshmbhat/Apps/CounterApp_MVP_Dagger/app/src/main/java/com/techy/nateshmbhat/contacto

    0 回复  |  直到 6 年前
        1
  •  1
  •   Attiq ur Rehman    6 年前

    我要写下步骤

    首先,您需要添加一个 班

    @Module
    class CountPresenterModule {
        @Provides
        @Singleton
        fun providCountPresenter(): CountPresenter.View {
            return CountPresenter()
        }
    }
    

    类似地,为toasPresenter添加模块类

    @Singleton
    @Component(modules = [AppModule::class, .....,ToastPresenterModule::class, CountPresenterModule::class]){
        fun inject(mainActivity: MainActivity)
    }
    

    被匕首/注射的魔力逗乐。

    Java第2部分

    @Singleton
    @Component(modules = {AppModule.class, ToastPresenterModule.class, CountPresenterModule.class}) {
       void inject(MainActivity mainActivity);
    }