BaseFragment基本クラスコード


パブリック抽象クラス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の()、falseにコンテナ、);

新しい新しいmInjectPresenters =のArrayList <>();

//取得変数が独自含め、宣言された
フィールド[]フィールド= this.getClass() getDeclaredFields()。 ;
(フィールド、フィールド,:フィールド){のために
//取得注釈型上記の変数が
injectPresenter injectPresenter = field.getAnnotation(InjectPresenter.class);
(!injectPresenter = null)のIF {
試み{
タイプのクラス=(クラス<< BasePresenterを拡張>? ?延びBasePresenter>)Field.getType();
BasePresenter mInjectPresenter = type.newInstance();
//は結合
mInjectPresenter.attach(この);
()をtrueに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(http://www.my516.com){
super.onDestroy()。
{(mInjectPresenters BasePresenterプレゼンター)用
)(presenter.detach。
}
mInjectPresenters.clear()。
mInjectPresenters = NULL;
}
}
--------------------- 

おすすめ

転載: www.cnblogs.com/ly570/p/11299107.html