Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Dagger 2在android中注入依赖项时出错_Java_Android_Dependency Injection_Dagger 2 - Fatal编程技术网

Java Dagger 2在android中注入依赖项时出错

Java Dagger 2在android中注入依赖项时出错,java,android,dependency-injection,dagger-2,Java,Android,Dependency Injection,Dagger 2,我正在用Dagger 2学习DI,但是我在依赖注入方面遇到了一些问题,我在这个应用程序中使用MVP,所以我将我的所有类打包 我试图向我的演示者注入依赖项,但我遇到了一个错误“如果没有@Providers注释方法,则无法提供”。我检查了我的代码,并检查了一些示例,我假设我正在注入此依赖项,我尝试了不同的方法,但我无法修复此错误,我不知道如何修复它 只有我想打开第二个活动,调用演示者的SplashActivity,但通过DI注入 格拉德尔图书馆 implementation 'com.google.

我正在用Dagger 2学习DI,但是我在依赖注入方面遇到了一些问题,我在这个应用程序中使用MVP,所以我将我的所有类打包

我试图向我的演示者注入依赖项,但我遇到了一个错误“如果没有@Providers注释方法,则无法提供”。我检查了我的代码,并检查了一些示例,我假设我正在注入此依赖项,我尝试了不同的方法,但我无法修复此错误,我不知道如何修复它

只有我想打开第二个活动,调用演示者的SplashActivity,但通过DI注入

格拉德尔图书馆

implementation 'com.google.dagger:dagger:2.17'
annotationProcessor 'com.google.dagger:dagger-compiler:2.17'
MovieApplication.java

    public class MovieApplication extends Application {

    private AppComponent appComponent;

    @Override
    public void onCreate() {
        super.onCreate();
        setupGraph();
    }

    private void setupGraph() {
        appComponent = DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
    }

    public static MovieApplication get(Context context){
        return (MovieApplication) context.getApplicationContext();
    }

    public AppComponent getAppComponent() {
        return appComponent;
    }
}
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

    @ApplicationContext
    Context context();

}
@Module
public class AppModule {

    private MovieApplication mMovieApplication;

    public AppModule(MovieApplication movieApplication) {
        this.mMovieApplication = movieApplication;
    }

    @Provides
    @ApplicationContext
    Context provideContext(){
        return mMovieApplication;
    }

    @Provides
    Application provideApplication(){
        return mMovieApplication;
    }
}
@MovieScreenScope
@Component(dependencies = AppComponent.class, modules = MovieModule.class)
public interface MovieComponent {

    void inject(SplashActivity splashActivity);
}
@Module
public class MovieModule {

    private Activity mActivity;

    public MovieModule(Activity activity) {
        this.mActivity = activity;
    }

    @Provides
    @ActivityContext
    Context provideContext(){
        return mActivity;
    }

    @Provides
    Activity provideActivity(){
        return mActivity;
    }

    @Provides
    @MovieScreenScope
    SplashPresenter<SplashView> provideSplashPresenter(SplashPresenterImpl<SplashView> presenter){
        return presenter;
    }

}
public class SplashActivity extends BaseActivity implements SplashView {

    @Inject
    SplashPresenter<SplashView> presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getMovieComponent().inject(this);
        presenter.openLoginActivity();
    }

    @Override
    public void openLoginActivity() {
        startActivity(new Intent(SplashActivity.this, LoginActivity.class));
        finish();

    }

    @Override
    public void openHomeActivity() {
        startActivity(new Intent(SplashActivity.this, ContainerActivity.class));
        finish();
    }
}
public class BaseActivity extends AppCompatActivity {

    private MovieComponent movieComponent;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupGraph();
    }

    private void setupGraph() {
        movieComponent = DaggerMovieComponent.builder()
                .movieModule(new MovieModule(this))
                .appComponent(MovieApplication.get(this).getAppComponent())
                .build();
    }

    public MovieComponent getMovieComponent() {
        return movieComponent;
    }
}
public interface SplashView {

    void openLoginActivity();
    void openHomeActivity();
}
public class SplashPresenterImpl<V extends SplashView> implements SplashPresenter<V> {

    private SplashView splashView;

    @Inject
    public SplashPresenterImpl(V splashView) {
        this.splashView = splashView;
    }

    @Override
    public void openLoginActivity() {
        splashView.openLoginActivity();

    }

    @Override
    public void openMainActivity() {

    }

    @Override
    public void verifyInternetConection() {

    }

    @Override
    public void getMoviesData() {

    }

}
@MovieScreenScope
public interface SplashPresenter <V extends SplashView> {

    void openLoginActivity();
    void openMainActivity();
    void verifyInternetConection();
    void getMoviesData();
}
AppComponent.java

    public class MovieApplication extends Application {

    private AppComponent appComponent;

    @Override
    public void onCreate() {
        super.onCreate();
        setupGraph();
    }

    private void setupGraph() {
        appComponent = DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
    }

    public static MovieApplication get(Context context){
        return (MovieApplication) context.getApplicationContext();
    }

    public AppComponent getAppComponent() {
        return appComponent;
    }
}
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

    @ApplicationContext
    Context context();

}
@Module
public class AppModule {

    private MovieApplication mMovieApplication;

    public AppModule(MovieApplication movieApplication) {
        this.mMovieApplication = movieApplication;
    }

    @Provides
    @ApplicationContext
    Context provideContext(){
        return mMovieApplication;
    }

    @Provides
    Application provideApplication(){
        return mMovieApplication;
    }
}
@MovieScreenScope
@Component(dependencies = AppComponent.class, modules = MovieModule.class)
public interface MovieComponent {

    void inject(SplashActivity splashActivity);
}
@Module
public class MovieModule {

    private Activity mActivity;

    public MovieModule(Activity activity) {
        this.mActivity = activity;
    }

    @Provides
    @ActivityContext
    Context provideContext(){
        return mActivity;
    }

    @Provides
    Activity provideActivity(){
        return mActivity;
    }

    @Provides
    @MovieScreenScope
    SplashPresenter<SplashView> provideSplashPresenter(SplashPresenterImpl<SplashView> presenter){
        return presenter;
    }

}
public class SplashActivity extends BaseActivity implements SplashView {

    @Inject
    SplashPresenter<SplashView> presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getMovieComponent().inject(this);
        presenter.openLoginActivity();
    }

    @Override
    public void openLoginActivity() {
        startActivity(new Intent(SplashActivity.this, LoginActivity.class));
        finish();

    }

    @Override
    public void openHomeActivity() {
        startActivity(new Intent(SplashActivity.this, ContainerActivity.class));
        finish();
    }
}
public class BaseActivity extends AppCompatActivity {

    private MovieComponent movieComponent;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupGraph();
    }

    private void setupGraph() {
        movieComponent = DaggerMovieComponent.builder()
                .movieModule(new MovieModule(this))
                .appComponent(MovieApplication.get(this).getAppComponent())
                .build();
    }

    public MovieComponent getMovieComponent() {
        return movieComponent;
    }
}
public interface SplashView {

    void openLoginActivity();
    void openHomeActivity();
}
public class SplashPresenterImpl<V extends SplashView> implements SplashPresenter<V> {

    private SplashView splashView;

    @Inject
    public SplashPresenterImpl(V splashView) {
        this.splashView = splashView;
    }

    @Override
    public void openLoginActivity() {
        splashView.openLoginActivity();

    }

    @Override
    public void openMainActivity() {

    }

    @Override
    public void verifyInternetConection() {

    }

    @Override
    public void getMoviesData() {

    }

}
@MovieScreenScope
public interface SplashPresenter <V extends SplashView> {

    void openLoginActivity();
    void openMainActivity();
    void verifyInternetConection();
    void getMoviesData();
}
AppModule.java

    public class MovieApplication extends Application {

    private AppComponent appComponent;

    @Override
    public void onCreate() {
        super.onCreate();
        setupGraph();
    }

    private void setupGraph() {
        appComponent = DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
    }

    public static MovieApplication get(Context context){
        return (MovieApplication) context.getApplicationContext();
    }

    public AppComponent getAppComponent() {
        return appComponent;
    }
}
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

    @ApplicationContext
    Context context();

}
@Module
public class AppModule {

    private MovieApplication mMovieApplication;

    public AppModule(MovieApplication movieApplication) {
        this.mMovieApplication = movieApplication;
    }

    @Provides
    @ApplicationContext
    Context provideContext(){
        return mMovieApplication;
    }

    @Provides
    Application provideApplication(){
        return mMovieApplication;
    }
}
@MovieScreenScope
@Component(dependencies = AppComponent.class, modules = MovieModule.class)
public interface MovieComponent {

    void inject(SplashActivity splashActivity);
}
@Module
public class MovieModule {

    private Activity mActivity;

    public MovieModule(Activity activity) {
        this.mActivity = activity;
    }

    @Provides
    @ActivityContext
    Context provideContext(){
        return mActivity;
    }

    @Provides
    Activity provideActivity(){
        return mActivity;
    }

    @Provides
    @MovieScreenScope
    SplashPresenter<SplashView> provideSplashPresenter(SplashPresenterImpl<SplashView> presenter){
        return presenter;
    }

}
public class SplashActivity extends BaseActivity implements SplashView {

    @Inject
    SplashPresenter<SplashView> presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getMovieComponent().inject(this);
        presenter.openLoginActivity();
    }

    @Override
    public void openLoginActivity() {
        startActivity(new Intent(SplashActivity.this, LoginActivity.class));
        finish();

    }

    @Override
    public void openHomeActivity() {
        startActivity(new Intent(SplashActivity.this, ContainerActivity.class));
        finish();
    }
}
public class BaseActivity extends AppCompatActivity {

    private MovieComponent movieComponent;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupGraph();
    }

    private void setupGraph() {
        movieComponent = DaggerMovieComponent.builder()
                .movieModule(new MovieModule(this))
                .appComponent(MovieApplication.get(this).getAppComponent())
                .build();
    }

    public MovieComponent getMovieComponent() {
        return movieComponent;
    }
}
public interface SplashView {

    void openLoginActivity();
    void openHomeActivity();
}
public class SplashPresenterImpl<V extends SplashView> implements SplashPresenter<V> {

    private SplashView splashView;

    @Inject
    public SplashPresenterImpl(V splashView) {
        this.splashView = splashView;
    }

    @Override
    public void openLoginActivity() {
        splashView.openLoginActivity();

    }

    @Override
    public void openMainActivity() {

    }

    @Override
    public void verifyInternetConection() {

    }

    @Override
    public void getMoviesData() {

    }

}
@MovieScreenScope
public interface SplashPresenter <V extends SplashView> {

    void openLoginActivity();
    void openMainActivity();
    void verifyInternetConection();
    void getMoviesData();
}
MovieComponent.java

    public class MovieApplication extends Application {

    private AppComponent appComponent;

    @Override
    public void onCreate() {
        super.onCreate();
        setupGraph();
    }

    private void setupGraph() {
        appComponent = DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
    }

    public static MovieApplication get(Context context){
        return (MovieApplication) context.getApplicationContext();
    }

    public AppComponent getAppComponent() {
        return appComponent;
    }
}
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

    @ApplicationContext
    Context context();

}
@Module
public class AppModule {

    private MovieApplication mMovieApplication;

    public AppModule(MovieApplication movieApplication) {
        this.mMovieApplication = movieApplication;
    }

    @Provides
    @ApplicationContext
    Context provideContext(){
        return mMovieApplication;
    }

    @Provides
    Application provideApplication(){
        return mMovieApplication;
    }
}
@MovieScreenScope
@Component(dependencies = AppComponent.class, modules = MovieModule.class)
public interface MovieComponent {

    void inject(SplashActivity splashActivity);
}
@Module
public class MovieModule {

    private Activity mActivity;

    public MovieModule(Activity activity) {
        this.mActivity = activity;
    }

    @Provides
    @ActivityContext
    Context provideContext(){
        return mActivity;
    }

    @Provides
    Activity provideActivity(){
        return mActivity;
    }

    @Provides
    @MovieScreenScope
    SplashPresenter<SplashView> provideSplashPresenter(SplashPresenterImpl<SplashView> presenter){
        return presenter;
    }

}
public class SplashActivity extends BaseActivity implements SplashView {

    @Inject
    SplashPresenter<SplashView> presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getMovieComponent().inject(this);
        presenter.openLoginActivity();
    }

    @Override
    public void openLoginActivity() {
        startActivity(new Intent(SplashActivity.this, LoginActivity.class));
        finish();

    }

    @Override
    public void openHomeActivity() {
        startActivity(new Intent(SplashActivity.this, ContainerActivity.class));
        finish();
    }
}
public class BaseActivity extends AppCompatActivity {

    private MovieComponent movieComponent;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupGraph();
    }

    private void setupGraph() {
        movieComponent = DaggerMovieComponent.builder()
                .movieModule(new MovieModule(this))
                .appComponent(MovieApplication.get(this).getAppComponent())
                .build();
    }

    public MovieComponent getMovieComponent() {
        return movieComponent;
    }
}
public interface SplashView {

    void openLoginActivity();
    void openHomeActivity();
}
public class SplashPresenterImpl<V extends SplashView> implements SplashPresenter<V> {

    private SplashView splashView;

    @Inject
    public SplashPresenterImpl(V splashView) {
        this.splashView = splashView;
    }

    @Override
    public void openLoginActivity() {
        splashView.openLoginActivity();

    }

    @Override
    public void openMainActivity() {

    }

    @Override
    public void verifyInternetConection() {

    }

    @Override
    public void getMoviesData() {

    }

}
@MovieScreenScope
public interface SplashPresenter <V extends SplashView> {

    void openLoginActivity();
    void openMainActivity();
    void verifyInternetConection();
    void getMoviesData();
}
MovieModule.java

    public class MovieApplication extends Application {

    private AppComponent appComponent;

    @Override
    public void onCreate() {
        super.onCreate();
        setupGraph();
    }

    private void setupGraph() {
        appComponent = DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
    }

    public static MovieApplication get(Context context){
        return (MovieApplication) context.getApplicationContext();
    }

    public AppComponent getAppComponent() {
        return appComponent;
    }
}
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

    @ApplicationContext
    Context context();

}
@Module
public class AppModule {

    private MovieApplication mMovieApplication;

    public AppModule(MovieApplication movieApplication) {
        this.mMovieApplication = movieApplication;
    }

    @Provides
    @ApplicationContext
    Context provideContext(){
        return mMovieApplication;
    }

    @Provides
    Application provideApplication(){
        return mMovieApplication;
    }
}
@MovieScreenScope
@Component(dependencies = AppComponent.class, modules = MovieModule.class)
public interface MovieComponent {

    void inject(SplashActivity splashActivity);
}
@Module
public class MovieModule {

    private Activity mActivity;

    public MovieModule(Activity activity) {
        this.mActivity = activity;
    }

    @Provides
    @ActivityContext
    Context provideContext(){
        return mActivity;
    }

    @Provides
    Activity provideActivity(){
        return mActivity;
    }

    @Provides
    @MovieScreenScope
    SplashPresenter<SplashView> provideSplashPresenter(SplashPresenterImpl<SplashView> presenter){
        return presenter;
    }

}
public class SplashActivity extends BaseActivity implements SplashView {

    @Inject
    SplashPresenter<SplashView> presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getMovieComponent().inject(this);
        presenter.openLoginActivity();
    }

    @Override
    public void openLoginActivity() {
        startActivity(new Intent(SplashActivity.this, LoginActivity.class));
        finish();

    }

    @Override
    public void openHomeActivity() {
        startActivity(new Intent(SplashActivity.this, ContainerActivity.class));
        finish();
    }
}
public class BaseActivity extends AppCompatActivity {

    private MovieComponent movieComponent;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupGraph();
    }

    private void setupGraph() {
        movieComponent = DaggerMovieComponent.builder()
                .movieModule(new MovieModule(this))
                .appComponent(MovieApplication.get(this).getAppComponent())
                .build();
    }

    public MovieComponent getMovieComponent() {
        return movieComponent;
    }
}
public interface SplashView {

    void openLoginActivity();
    void openHomeActivity();
}
public class SplashPresenterImpl<V extends SplashView> implements SplashPresenter<V> {

    private SplashView splashView;

    @Inject
    public SplashPresenterImpl(V splashView) {
        this.splashView = splashView;
    }

    @Override
    public void openLoginActivity() {
        splashView.openLoginActivity();

    }

    @Override
    public void openMainActivity() {

    }

    @Override
    public void verifyInternetConection() {

    }

    @Override
    public void getMoviesData() {

    }

}
@MovieScreenScope
public interface SplashPresenter <V extends SplashView> {

    void openLoginActivity();
    void openMainActivity();
    void verifyInternetConection();
    void getMoviesData();
}
SplashView.java

    public class MovieApplication extends Application {

    private AppComponent appComponent;

    @Override
    public void onCreate() {
        super.onCreate();
        setupGraph();
    }

    private void setupGraph() {
        appComponent = DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
    }

    public static MovieApplication get(Context context){
        return (MovieApplication) context.getApplicationContext();
    }

    public AppComponent getAppComponent() {
        return appComponent;
    }
}
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

    @ApplicationContext
    Context context();

}
@Module
public class AppModule {

    private MovieApplication mMovieApplication;

    public AppModule(MovieApplication movieApplication) {
        this.mMovieApplication = movieApplication;
    }

    @Provides
    @ApplicationContext
    Context provideContext(){
        return mMovieApplication;
    }

    @Provides
    Application provideApplication(){
        return mMovieApplication;
    }
}
@MovieScreenScope
@Component(dependencies = AppComponent.class, modules = MovieModule.class)
public interface MovieComponent {

    void inject(SplashActivity splashActivity);
}
@Module
public class MovieModule {

    private Activity mActivity;

    public MovieModule(Activity activity) {
        this.mActivity = activity;
    }

    @Provides
    @ActivityContext
    Context provideContext(){
        return mActivity;
    }

    @Provides
    Activity provideActivity(){
        return mActivity;
    }

    @Provides
    @MovieScreenScope
    SplashPresenter<SplashView> provideSplashPresenter(SplashPresenterImpl<SplashView> presenter){
        return presenter;
    }

}
public class SplashActivity extends BaseActivity implements SplashView {

    @Inject
    SplashPresenter<SplashView> presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getMovieComponent().inject(this);
        presenter.openLoginActivity();
    }

    @Override
    public void openLoginActivity() {
        startActivity(new Intent(SplashActivity.this, LoginActivity.class));
        finish();

    }

    @Override
    public void openHomeActivity() {
        startActivity(new Intent(SplashActivity.this, ContainerActivity.class));
        finish();
    }
}
public class BaseActivity extends AppCompatActivity {

    private MovieComponent movieComponent;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupGraph();
    }

    private void setupGraph() {
        movieComponent = DaggerMovieComponent.builder()
                .movieModule(new MovieModule(this))
                .appComponent(MovieApplication.get(this).getAppComponent())
                .build();
    }

    public MovieComponent getMovieComponent() {
        return movieComponent;
    }
}
public interface SplashView {

    void openLoginActivity();
    void openHomeActivity();
}
public class SplashPresenterImpl<V extends SplashView> implements SplashPresenter<V> {

    private SplashView splashView;

    @Inject
    public SplashPresenterImpl(V splashView) {
        this.splashView = splashView;
    }

    @Override
    public void openLoginActivity() {
        splashView.openLoginActivity();

    }

    @Override
    public void openMainActivity() {

    }

    @Override
    public void verifyInternetConection() {

    }

    @Override
    public void getMoviesData() {

    }

}
@MovieScreenScope
public interface SplashPresenter <V extends SplashView> {

    void openLoginActivity();
    void openMainActivity();
    void verifyInternetConection();
    void getMoviesData();
}
SplashPresenter.java

    public class MovieApplication extends Application {

    private AppComponent appComponent;

    @Override
    public void onCreate() {
        super.onCreate();
        setupGraph();
    }

    private void setupGraph() {
        appComponent = DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
    }

    public static MovieApplication get(Context context){
        return (MovieApplication) context.getApplicationContext();
    }

    public AppComponent getAppComponent() {
        return appComponent;
    }
}
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

    @ApplicationContext
    Context context();

}
@Module
public class AppModule {

    private MovieApplication mMovieApplication;

    public AppModule(MovieApplication movieApplication) {
        this.mMovieApplication = movieApplication;
    }

    @Provides
    @ApplicationContext
    Context provideContext(){
        return mMovieApplication;
    }

    @Provides
    Application provideApplication(){
        return mMovieApplication;
    }
}
@MovieScreenScope
@Component(dependencies = AppComponent.class, modules = MovieModule.class)
public interface MovieComponent {

    void inject(SplashActivity splashActivity);
}
@Module
public class MovieModule {

    private Activity mActivity;

    public MovieModule(Activity activity) {
        this.mActivity = activity;
    }

    @Provides
    @ActivityContext
    Context provideContext(){
        return mActivity;
    }

    @Provides
    Activity provideActivity(){
        return mActivity;
    }

    @Provides
    @MovieScreenScope
    SplashPresenter<SplashView> provideSplashPresenter(SplashPresenterImpl<SplashView> presenter){
        return presenter;
    }

}
public class SplashActivity extends BaseActivity implements SplashView {

    @Inject
    SplashPresenter<SplashView> presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getMovieComponent().inject(this);
        presenter.openLoginActivity();
    }

    @Override
    public void openLoginActivity() {
        startActivity(new Intent(SplashActivity.this, LoginActivity.class));
        finish();

    }

    @Override
    public void openHomeActivity() {
        startActivity(new Intent(SplashActivity.this, ContainerActivity.class));
        finish();
    }
}
public class BaseActivity extends AppCompatActivity {

    private MovieComponent movieComponent;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupGraph();
    }

    private void setupGraph() {
        movieComponent = DaggerMovieComponent.builder()
                .movieModule(new MovieModule(this))
                .appComponent(MovieApplication.get(this).getAppComponent())
                .build();
    }

    public MovieComponent getMovieComponent() {
        return movieComponent;
    }
}
public interface SplashView {

    void openLoginActivity();
    void openHomeActivity();
}
public class SplashPresenterImpl<V extends SplashView> implements SplashPresenter<V> {

    private SplashView splashView;

    @Inject
    public SplashPresenterImpl(V splashView) {
        this.splashView = splashView;
    }

    @Override
    public void openLoginActivity() {
        splashView.openLoginActivity();

    }

    @Override
    public void openMainActivity() {

    }

    @Override
    public void verifyInternetConection() {

    }

    @Override
    public void getMoviesData() {

    }

}
@MovieScreenScope
public interface SplashPresenter <V extends SplashView> {

    void openLoginActivity();
    void openMainActivity();
    void verifyInternetConection();
    void getMoviesData();
}
公共类SplashPresenterImpl实现SplashPresenter{
私人SplashView SplashView;
@注入
公共SplashPresenterImpl(V splashView){
this.splashView=splashView;
}
@凌驾
public void openLoginActivity(){
splashView.openLoginActivity();
}
@凌驾
公共活动(){
}
@凌驾
公共无效验证互联网连接(){
}
@凌驾
public void getMoviesData(){
}
}
SplashPresenter.java

    public class MovieApplication extends Application {

    private AppComponent appComponent;

    @Override
    public void onCreate() {
        super.onCreate();
        setupGraph();
    }

    private void setupGraph() {
        appComponent = DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
    }

    public static MovieApplication get(Context context){
        return (MovieApplication) context.getApplicationContext();
    }

    public AppComponent getAppComponent() {
        return appComponent;
    }
}
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

    @ApplicationContext
    Context context();

}
@Module
public class AppModule {

    private MovieApplication mMovieApplication;

    public AppModule(MovieApplication movieApplication) {
        this.mMovieApplication = movieApplication;
    }

    @Provides
    @ApplicationContext
    Context provideContext(){
        return mMovieApplication;
    }

    @Provides
    Application provideApplication(){
        return mMovieApplication;
    }
}
@MovieScreenScope
@Component(dependencies = AppComponent.class, modules = MovieModule.class)
public interface MovieComponent {

    void inject(SplashActivity splashActivity);
}
@Module
public class MovieModule {

    private Activity mActivity;

    public MovieModule(Activity activity) {
        this.mActivity = activity;
    }

    @Provides
    @ActivityContext
    Context provideContext(){
        return mActivity;
    }

    @Provides
    Activity provideActivity(){
        return mActivity;
    }

    @Provides
    @MovieScreenScope
    SplashPresenter<SplashView> provideSplashPresenter(SplashPresenterImpl<SplashView> presenter){
        return presenter;
    }

}
public class SplashActivity extends BaseActivity implements SplashView {

    @Inject
    SplashPresenter<SplashView> presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getMovieComponent().inject(this);
        presenter.openLoginActivity();
    }

    @Override
    public void openLoginActivity() {
        startActivity(new Intent(SplashActivity.this, LoginActivity.class));
        finish();

    }

    @Override
    public void openHomeActivity() {
        startActivity(new Intent(SplashActivity.this, ContainerActivity.class));
        finish();
    }
}
public class BaseActivity extends AppCompatActivity {

    private MovieComponent movieComponent;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupGraph();
    }

    private void setupGraph() {
        movieComponent = DaggerMovieComponent.builder()
                .movieModule(new MovieModule(this))
                .appComponent(MovieApplication.get(this).getAppComponent())
                .build();
    }

    public MovieComponent getMovieComponent() {
        return movieComponent;
    }
}
public interface SplashView {

    void openLoginActivity();
    void openHomeActivity();
}
public class SplashPresenterImpl<V extends SplashView> implements SplashPresenter<V> {

    private SplashView splashView;

    @Inject
    public SplashPresenterImpl(V splashView) {
        this.splashView = splashView;
    }

    @Override
    public void openLoginActivity() {
        splashView.openLoginActivity();

    }

    @Override
    public void openMainActivity() {

    }

    @Override
    public void verifyInternetConection() {

    }

    @Override
    public void getMoviesData() {

    }

}
@MovieScreenScope
public interface SplashPresenter <V extends SplashView> {

    void openLoginActivity();
    void openMainActivity();
    void verifyInternetConection();
    void getMoviesData();
}
@MovieScreenScope
公共界面演示者{
void openLoginActivity();
void openmain活动();
无效验证Internet连接();
void getMoviesData();
}

这里唯一的问题似乎是
SplashPresenterImpl
类的构造函数中的
splashView
参数。当使用dagger创建
SplashPresenterImpl
的对象时,它会尝试查找返回
SplashView
@提供的方法。基本上,它试图在依赖关系图中找到
SplashView
,由于没有使用
@Provides注释的方法返回此对象,因此会出现此错误