BaseFragment實用篇

public abstract class BaseFragment<P extends BasePresenter> extends Fragment {

    private View view;
    protected P mPresenter;
    public boolean isViewCreated;
    public boolean isUIVisible;
    public Toast toast;

    @SuppressLint("NewApi")
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        view = LayoutInflater.from(container.getContext()).inflate(getFragmentLayout(), container, false);
        //初始化屏幕適配
        AutoUtils.auto(view);
        ButterKnife.bind(this, view);
        toast = new Toast(getActivity());
        if (onCreatePresenter() != null) {
            mPresenter = onCreatePresenter();
        }

        return view;

    }

    /**
     * 返回佈局文件
     *
     * @return
     */
    protected abstract int getFragmentLayout();

    protected abstract void FragmentInitData();

    public void showToast(String msg) {
        if (toast != null) {
            toast.cancel();
        }
        ShowUtils.Toastshort(getActivity(), msg);
    }

    private ProgressDialog dialog;

    public void showLoading() {
        if (dialog != null && dialog.isShowing()) return;
        dialog = new ProgressDialog(getActivity());
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCanceledOnTouchOutside(false);
        dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        dialog.setMessage(getString(R.string.loading));
        dialog.show();
//        handler.sendEmptyMessageDelayed(0, 5000);

    }

    public static int MIN_DELAY_TIME = 1000;  // 兩次點擊間隔不能少於1000ms
    private static long lastClickTime;

    public static boolean isFastClick() {
        boolean flag = true;
        long currentClickTime = System.currentTimeMillis();
        if ((currentClickTime - lastClickTime) >= MIN_DELAY_TIME) {
            flag = false;
        }
        lastClickTime = currentClickTime;
        return flag;
    }

    public void dismissLoading() {
        if (dialog != null && dialog.isShowing()) {
            dialog.dismiss();
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Log.d(getClass().getSimpleName(), getClass().getSimpleName() + ":onCreate");
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Log.d(getClass().getSimpleName(), ":onActivityCreated");
        isViewCreated = true;
        FragmentInitData();

    }

    @Override
    public void onStart() {
        super.onStart();
        Log.d(getClass().getSimpleName(), ":onStart");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.d(getClass().getSimpleName(), ":onPause");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.d(getClass().getSimpleName(), ":onStop");
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.d(getClass().getSimpleName(), ":onDestroyView");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        ButterKnife.unbind(this);
        if (mPresenter != null) {
            mPresenter.unSubscribe();
        }
        Log.d(getClass().getSimpleName(), ":onDestroy");
    }

    protected abstract P onCreatePresenter();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章