注入フィールドにアクセスしようとすると、アクセスされたフィールドがnullであるため、アプリケーションがクラッシュすることはまれです。私はそれを再現する方法がなく、それはまず起こるはずではありません。 これがなぜ起こるのか、それを避ける方法はありますか?null注入フィールドのまれな発生
フィールドはフラグメント内に注入されている:
public class MyFragment extends Fragment {
@Inject StubManager mStubManager;
....
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Application.getAppComponent().inject(this);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
....
menu.findItem(R.id.item_id)
.setEnabled(!mStubManager.isRunning());
}
}
アプリのコンポーネントは以下のように見える、とアプリケーションクラスで初期化されます。
@Singleton
@Component(modules = {
MyModule.class
})
public interface AppComponent {
StubManager stubManager();
void inject(MyFragment target);
}
あなたのフィールドが '@ Nullable'でない場合、Daggerがそれを注入した後に' null'にならないでしょう。注入が完了する前にフィールドにアクセスした場合、これがヌルになる唯一の方法であるため、注入をいつ呼び出すのかを確認する必要があります。 –
'@Inject StubManager mStubManager; – EpicPandaForce
@EpicPandaForce私は質問を修正しましたので、今はもっと明確にすべきです。 –