0

我需要Listener在我的子类中的继承final字段 ( mCursorLoader) 上注册 a。我需要在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) {

                }
        }
}
4

1 回答 1

1

将一个构造函数添加到您的基类(或修改现有的),该构造函数将侦听器作为参数,并注册此侦听器而不是基类侦听器:

protected A(Context context, String mId, OnLoadCompleteListener<Cursor> listener) {
    super(context);
    this.mCursorLoader = new CursorLoader(context);
    this.mCursorLoader.registerListener(0, listener);
    this.mId = mId;
}
于 2013-01-09T20:26:35.210 回答