我用匕首注入一個ViewModel成片段之前:匕首2:注射對象可能仍然爲空onAttach在片段稱爲
class BaseFragment<T extends BaseViewModel> extends Fragment {
@Inject T viewModel;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if(viewModel == null) {
throw new RuntimeException("Viewmodel was null: "+getClass());
}
viewModel.setContext(context);
viewModel.onAttach(context);
}
}
class MyFragment extends BaseFragment<MyViewModel> {
public MyFragment() {
MyApp.getInstance().getComponent().inject(this);
//viewModel should be available at this point, before OnAttach is called
}
}
因此,在短期我注入視圖模型在構造函數中,如果它在onAttach仍然是空的東西是錯誤的。
這絕不會發生,除非是100000次中的1次。只是幾個崩潰。但無法弄清楚爲什麼。這種方法是錯誤的嗎? Dagger是否對參數化對象有問題?
我不直接實例化BaseFragment,因此類型應該可以工作,它通常會這樣做,那麼爲什麼它在某些情況下不起作用?
因此,有時'if(viewModel == null)'計算爲'true'? – azizbekian
是的。非常稀有。 – breakline