BaseFragment基本クラス

パッケージ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;
}
}
--------------------- 

おすすめ

転載: www.cnblogs.com/ly570/p/11299121.html
おすすめ