Проблемма при построение Dagger2

127
31 декабря 2020, 18:10

Пытаюсь ставить clean architor

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.testclean3.Presentation.UndeMainPresentation.GetCorework(java.lang.String)' on a null object reference

Вот это получаю, при обращении к undeMainPresentation.GetCorework(Ss);:

   public class MainPresntation {
    @Inject UndeMainPresentation undeMainPresentation;

    public MainPresntation()
    {
       // this.undeMainPresentation=  ApplicationComponent.getUndeMainPresentation();

        AndroidApplication.applicationComponent.inject(this);
    }
    public void MakeControl(String Ss)
    {
         undeMainPresentation.GetCorework(Ss);
    }
}

MainActivity:

    public class MainActivity extends AppCompatActivity {
    public MainPresntation mainPresntation;
    private ApplicationComponent applicationComponent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.applicationComponent= AndroidApplication.getApplicationComponent();


        this.mainPresntation=new MainPresntation();
    }
    public void OnClick(View V)
    {
        mainPresntation.MakeControl("wefefwfwe");
    }
}

ApplicationModule:

@Module
public class ApplicationModule
{
    private final Application application;
    public ApplicationModule
            (Application application) {
        this.application = application;
    }
   @Provides @Singleton Context provideApplicationContext() {
       return this.application;
   }
    @Provides @Singleton ThreadExecutor provideThreadExecutor(JobExecutor jobExecutor) {
        return jobExecutor;
    }
    @Provides @Singleton PostExecutionThread providePostExecutionThread(UIThread uiThread) {
        return uiThread;
    }
     @Provides
     Repositor provideRepositor(Repositor repositor) {
         return repositor;
     }
     @Provides
     WorkDomain provideWorkDomain(WorkDomain workDomain) {
         return workDomain;
     }
 @Provides
 UndeMainPresentation prvideUndeMainPresentation(UndeMainPresentation undeMainPresentation)
 {
     return undeMainPresentation;
 }
}

ApplicationComponent:

@Singleton
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
    void inject(MainActivity mainActivity);
    Context context();
    ThreadExecutor threadExecutor();
    PostExecutionThread postExecutionThread();

    void inject(UndeMainPresentation undeMainPresentation);
    void inject(Repositor repositor);
    void inject(WorkDomain workDomain);
    void inject(MainPresntation mainPresntation);

}

И напоследок :

public class UndeMainPresentation {

    private WorkDomain workDomain;
    @Inject public UndeMainPresentation(WorkDomain workDomain)
    {
        this.workDomain = workDomain;
    }
    public void GetCorework(String sss)
    {
        workDomain.execute(new UserListObserver(),null);
    }

    private final class UserListObserver extends DefaultObserver<Data_Work> {
        @Override public void onComplete() {
        }
        @Override
        public void onNext(Data_Work data_work) {
        }
        @Override public void onError(Throwable e) {
        }

    }
}

В чем Я ошибаюсь?

P.S. AndroidApplication, но уже переделанном виде , а не такой какой был в момент создания вопроса:

  public class AndroidApplication  extends Application {
    private static ApplicationComponent applicationComponent;
    public static UndeMainPresentation undeMainPresentation;

    @Override public void onCreate() {
        super.onCreate();
        this.applicationComponent = DaggerApplicationComponent.builder()
                .applicationModule(new ApplicationModule(this))
                .build();
        applicationComponent.inject(undeMainPresentation);
    }
    public static ApplicationComponent getApplicationComponent()
    {
        return applicationComponent;
    }

    public static   UndeMainPresentation getUndeMainPresentation()
    {
        return undeMainPresentation;
    }

}

P.S.S Класс AndroidApplication находиться в папке Dagger2 Манифест приложения:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.testclean3">
    <application
        android:name=".Dagger2.AndroidApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
READ ALSO
Сделать кнопку не активной, если выбран первый элемент

Сделать кнопку не активной, если выбран первый элемент

Необходимо сделать кнопку "создать" не активной в том случае, если выбрано одно из двух значений “Выбрать месяц”/“Выбрать год” или выбрано...

128
Как сделать копирование куска кода в буфер обмена на js?

Как сделать копирование куска кода в буфер обмена на js?

Для сотрудников был сделан скрипт, для формирования email письмаЗаполняем поля, а ниже формируется письмо в формате html (подставляются данные...

107
Порядок вызова функции js async

Порядок вызова функции js async

С прошлым примером все получилось, поэкспериментировал - вроде бы все работаетРешил применить в задаче

104