私は短剣を試していて、ObjectGraph をセットアップしようとしています。BaseModule
SharedPreferences や Bus などを格納する を作成しました。WidgetModule
画像読み込み用のピカソなどを含むを作成しました。
アダプタ クラスの 1 つに Picasso を挿入しようとしています。アダプター コンストラクターで ObjectGraph インスタンスを取得し、アダプターを挿入します。私は不平を言う実行時例外を受け取ります:
Caused by: java.lang.IllegalArgumentException: No inject registered for members/<ParentClass>$1. You must explicitly add it to the 'injects' option in one of your modules.
私はそのクラスで注射を行っていないので、これは私にとって奇妙です. ParentClass
アダプターを作成する場所ですが、注入はアダプター自体で行われます。injects
アノテーションに挿入されていない親クラスを本当に宣言する必要がありますか? これが私のアダプターコンストラクターです:
public MyAdapter(Context context, int textViewResourceId, List<Item> items) {
super(context, textViewResourceId, items);
MyApplication.get(getContext()).inject(this); //exception occurs here
}
ここに私のモジュールがあります:
@Module(
injects = {
MyApplication.class,
}
)
public final class BaseModule {
//...
}
@Module(
injects = MyAdapter.class
)
public class WidgetModule {
public WidgetModule(Application app) {
this.app = app;
}
@Provides
@Singleton
Picasso providePicasso() {
return new Picasso.Builder(app)
.build();
}
}
ご覧のとおり、アダプター クラスが にinjects
あるのに、なぜ親クラスに言及しているのでしょうか。
また、これは ObjectGraph を作成するための適切な構造ですか? includes
とのドキュメントaddsTo
は非常にまばらで、U2020 のようなすべてのデモ プロジェクトは、実際の意味があいまいです。必要に応じて簡単にオーバーライドできるように、モジュールを分離しようとしています。
編集:両方のモジュールに親クラスを追加しても、例外が発生することがわかりました。これは奇妙です。