Listener
継承されたfinal
フィールド ( ) のサブクラスにを登録する必要がありmCursorLoader
ます。constructor
サブクラスでこれを行う必要があります。できれば、フィールドをサブクラスに変更しnon-final
たり、サブクラスで何もしたりしないunRegistering
でください。
問題は、私の親クラスがListener
その実装からそのコンストラクターに登録していることです。そして、それが登録されないようにしてからListener
サブクラスを登録するListener
か、親クラスListener
を登録解除してからサブクラスを登録する方法が必要Listener
です。
説明するのが難しいので、さらに明確にする必要がある場合は、お知らせください。
public abstract class A<T> extends AsyncTaskLoader<List<T>> {
protected final Listener mListener = new Listener();
protected final CursorLoader mCursorLoader;
protected final String mId;
public A(Context context, String mId) {
super(context);
this.mCursorLoader = new CursorLoader(context);
this.mCursorLoader.registerListener(0, mListener);
this.mId = mId;
}
public class Listener implements OnLoadCompleteListener<Cursor> {
public void onLoadComplete(final Loader<Cursor> loader, final Cursor cursor) {
}
}
}
public abstract class B<T> extends A<T> {
protected B(Context context, String mId) {
super(context, mId);
}
public class Listener implements OnLoadCompleteListener<Cursor> {
public void onLoadComplete(final Loader<Cursor> loader, final Cursor cursor) {
}
}
}