我有一個MainActivity需要一個MeasurementFragment,它需要一個Converter。注入一個注入的片段(沒有重複的組件)
問題是:當在[1]
處注入MesurementFragment時,其自身依賴關係converter
[2]
未被注入。
class MainActivity extends AppCompatActivity {
@Inject MeasurementFragment measureFrag;
@Override
protected void OnCreate(Bundle b){
//[1]*
DaggerMainActivityComponent().create().inject(this);
}
}
有沒有一種方法有注射「級聯」,這樣,當measureFrag
被注入converter
注入?
我可以在構造函數([3]
)中創建DaggerMainActivityComponent的第二個實例並注入它,但這聽起來像個壞主意。
class MeasurementFragment extends Fragment {
// [2]*
@Inject Converter converter;
// required *empty* constructor
MeasrementFragment(){
// [3]*
}
}
其他可能相關的代碼(組件和模塊):
@Component
interface MainActivityComponent(){
void inject(MainActivity ma);
void inject(MeasurementFragment mf); // << not used :(
}
@Module
class MainActivityModule{
@Provides MeasurementFragment getMF(){ return new MeasurementFragment(); }
@Provides Converter getConverter(){ return new Converter(); }
}
是否有更好的設計來實現這一目標?
您必須在[3]中將MeasurementFragment注入依賴關係圖中。我認爲這是唯一的方法。對於設計部分,您可以在MainActivity中創建DaggerMainActivityComponent對象,然後使用getter和setter訪問並注入片段。 –
嘗試添加MeasurementFragment的默認構造函數,並使用Inject註釋。刪除你的void注入(MeasurementFragment mf);來自你的組件,以及你的模塊的MeasurementFragment的Provide方法。 – ootinii