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 뷰 그룹 컨테이너 @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 (TRUE);
field.set (이, mInjectPresenter);
mInjectPresenters.add (mInjectPresenter);
} 캐치 (시 IllegalAccessException 전자) {
e.printStackTrace ();
} 캐치 (java.lang.InstantiationException 전자) {
e.printStackTrace ();
} 캐치 (ClassCastException이 전자) {
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