パッケージcom.test.mvp.mvpdemo.mvp.v6.basemvp。
輸入android.os.Bundle;
輸入android.support.annotation.IdRes。
輸入android.support.annotation.LayoutRes。
輸入android.support.annotation.NonNull;
輸入android.support.annotation.Nullable;
輸入android.support.v4.app.Fragment。
輸入android.view.LayoutInflater;
輸入android.view.View。
輸入android.view.ViewGroup;
輸入com.test.mvp.mvpdemo.mvp.v6.inject.InjectPresenter。
インポートをjava.lang.reflect.Field;
輸入はjava.util.ArrayList;
輸入はjava.util.List;
パブリック抽象クラスBaseFragmentは、フラグメントがIBaseView {実装して拡張する
プライベートリスト<BasePresenter> mInjectPresentersを。
プライベートビューmLayoutView。
保護された抽象@LayoutResはsetLayoutのを()int型。
保護された抽象無効initViews(@NullableバンドルsavedInstanceState);
保護された抽象無効initData();
@SuppressWarnings( "ConstantConditions")
保護された<Tビューを拡張> T $(@ IdRes int型のviewId){
)(this.getViewを返すfindViewById(のviewId)。
}
@SuppressWarnings({ "未チェック"、 "TryWithIdenticalCatches"})
@Nullable
@Override
パブリックビューonCreateView(@NonNull LayoutInflaterインフレータ、@NullableのViewGroup容器、@NullableバンドルsavedInstanceState){
ビュービュー= inflater.inflate(setLayoutの()、コンテナ)、偽;
mInjectPresenters =新しいArrayListを<>();
//获得已经申明的变量、包括私有的
フィールド[]フィールド= this.getClass()getDeclaredFields()。
(項目フィールド:フィールド)のために{
//获取变量上面的注解类型
InjectPresenter injectPresenter = field.getAnnotation(InjectPresenter.class)。
(injectPresenter!= null)の場合には{
{しようと
、クラスを<?BasePresenter> =入力延びfield.getType()(?<クラスBasePresenterは>延び);
BasePresenter mInjectPresenter = type.newInstance()。
//绑定
mInjectPresenter.attach(この);
field.setAccessible(真の);
field.set(これ、mInjectPresenter)。
mInjectPresenters.add(mInjectPresenter)。
}キャッチ(IllegalAccessExceptionが電子){
e.printStackTrace();
}キャッチ(java.lang.InstantiationExceptionの電子){
e.printStackTrace();
}キャッチ(れるClassCastException E){
e.printStackTrace();
;:新しいのRuntimeExceptionをスロー(「BasePresenterサブクラス必見クラス拡張します」)
}
}
}
ビューを返します。
}
@Override
公共ボイドonViewCreated(@NonNullビュービュー、@NullableバンドルsavedInstanceState){
super.onViewCreated(ビュー、savedInstanceState)。
initViews(savedInstanceState)。
initData();
}
@Override
公共ボイドonDestroy(){
super.onDestroy()。
{(mInjectPresenters BasePresenterプレゼンター)用
)(presenter.detach。
}
mInjectPresenters.clear()。
mInjectPresenters = NULL;
}
}
---------------------
BaseFragment基本クラス
おすすめ
転載: www.cnblogs.com/ly570/p/11299121.html
おすすめ
ランキング