대거를 사용하여 내 응용 프로그램에서 종속성 주입을 구현하려고합니다. 모듈 및 발표자에서 내가 api
를 주입하려단검 오류 : 정적이 아닌 내부 클래스를 삽입 할 수 없습니다.
public abstract class DateScreen implements Blueprint {
protected LocalDate date;
public DateScreen() { this(LocalDate.now()); }
public DateScreen(LocalDate date) { this.date = date; }
public LocalDate getDate() { return date; }
public void setDate(LocalDate date){ this.date = date; }
}
및 formatter
: 여기 DateScreen
@Layout(R.layout.day)
public class DayScreen extends DateScreen {
LocalDate date;
public DayScreen(LocalDate date) { this.date = date; }
@Override public String getMortarScopeName() { return getClass.getName(); }
@Override public Object getDaggerModule getModule() { retrun new Module(); }
@dagger.Module(addsTo = UiModule.class, injects = DayView.class, complete = false, library = true)
public class Module {
@Inject RestService api;
@Inject DateTimeFormatter formatter;
@Provides @Named("DayScreenDate") LocalDate provideDate(){
return date;
}
}
@Singleton
public class Presenter extends ViewPresenter<DayView> {
//@Inject RestService api;
//@Inject DateTimeFormatter formatter;
RestService api;
DateTimeFormatter formatter;
@Inject Presenter(RestService api, DateTimeFormatter formatter){
this.api = api;
this.formatter = formatter;
}
@Override
protected void onLoad(Bundle savedInstanceState) {
super.onLoad(savedInstanceState);
api.statisticsDay(DayScreen.this.date.format(formatter))
.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(
resp -> getView().setData(resp.events),
err -> Log.e(TAG, err.getLocalizedMessage()),
() -> Log.v(TAG, "day stats received")
);
}
}
추상적이다 : 나는 DayScreen
클래스가 "Simpler Android apps with Flow and Mortar"
설명에 나는 유사한 구조를 가지고 생성자 및 골짜기 필드 주입을 통해 발생하지만 동일한 오류가 발생합니다. error: Can't inject a non-static inner class:...
정적 클래스가 필요한 이유는 누구에게 알 수 있습니까? 위에 언급 한 기사를 부적절하게 만드는 변경 사항이 있습니까?
감사합니다.
죄송합니다. 컴파일 시간 오류 은 컴파일 타임에 인스턴스화 할 수 없다는 것을 잊어 버렸습니다. 질문에서 언급 한 'AlbumScreen' 클래스를 참조하십시오. 내부 정적 클래스'Module'과'Presenter'가 있습니다. –
컴파일 할 때 클래스가 인스턴스화되지 않습니다. 나는 너를 따라하지 않는다. –
당신은 "비 정적 클래스는 인 클로징 인스턴스를 인스턴스화해야합니다."라고 썼습니다. 그러나 컴파일 타임에 오류가 발생하여 인스턴스가 필요할 수 있습니다. –