Android BaseActivity和BaseFragment封装写法!

一,前言:在常用的APP中,大致也就是这种写法,平时开项目的时候也常用,所以写在这里。用的时候这复制,然后再根据具体的业务逻辑更改下。如下

BaseActivity

public abstract class BaseActivity extends AppCompatActivity {
    /***封装toast对象**/
    private static Toast toast;
    /***获取TAG的activity名称**/
    protected final String TAG = this.getClass().getSimpleName();
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(setLyoutId());
        initLogger();
        initView();
        initDate();
    }
    public void initLogger(){
        Logger.init(TAG)    //LOG TAG默认是PRETTYLOGGER
                .methodCount(3)                 // 决定打印多少行(每一行代表一个方法)默认:2
                .hideThreadInfo()               // 隐藏线程信息 默认:显示
                .logLevel(LogLevel.NONE)        // 是否显示Log 默认:LogLevel.FULL(全部显示)
                .methodOffset(2);                // 默认:0
    }
    /**
     * 所有初始化的空间放这个里面。
     * @param
     */

    public abstract void initView();
    public abstract int setLyoutId();

    /**
     * 数据初始化
     */
    public abstract void initDate();
    @Override
    public void onRestart() {
        super.onRestart();
        Logger.d(TAG, "onRestart: 重启" );
    }

    @Override
    public void onStart() {
        super.onStart();
        Logger.d(TAG, "onRestart: 启动" );

    }

    @Override
    public void onResume() {
        super.onResume();
        Logger.d(TAG, "onRestart: 绘制" );

    }

    @Override
    public void onPause() {
        super.onPause();
        Logger.d(TAG, "onRestart: 暂停" );

    }

    @Override
    public void onStop() {
        super.onStop();
        Logger.d(TAG, "onRestart: 停止" );

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onRestart: 销毁" );

    }
    /**
     * 显示长toast
     * @param msg
     */
    public void tLong(String msg){
        if (null == toast) {
            toast = new Toast(this);
            toast.setDuration(Toast.LENGTH_LONG);
            toast.setText(msg);
            toast.show();
        } else {
            toast.setText(msg);
            toast.show();
        }
    }

    /**
     * 显示短toast
     * @param msg
     */
    public void tShort(String msg){
        if (null == toast) {
            toast = new Toast(this);
            toast.setDuration(Toast.LENGTH_SHORT);
            toast.setText(msg);
            toast.show();
        } else {
            toast.setText(msg);
            toast.show();
        }
    }


    /**
     * 跳转页面
     *
     * @param clz 所跳转的目的Activity类
     */
    public void startActivity(Class clz) {
        startActivity(new Intent(this, clz));
    }

    /**
     * 跳转页面
     *
     * @param clz         所跳转的Activity类
     * @param requestCode 请求码
     */
    public void startActivityForResult(Class clz, int requestCode) {
        startActivityForResult(new Intent(this, clz), requestCode);
    }

    /**
     * 跳转页面
     *
     * @param clz    所跳转的目的Activity类
     * @param bundle 跳转所携带的信息
     */
    public void startActivity(Class clz, Bundle bundle) {
        Intent intent = new Intent(this, clz);
        if (bundle != null) {
            intent.putExtra("bundle", bundle);
        }
        startActivity(intent);
    }

    /**
     * 跳转页面
     *
     * @param clz         所跳转的Activity类
     * @param bundle      跳转所携带的信息
     * @param requestCode 请求码
     */
    public void startActivityForResult(Class clz, int requestCode, Bundle bundle) {
        Intent intent = new Intent(this, clz);
        if (bundle != null) {
            intent.putExtra("bundle", bundle);
        }
        startActivityForResult(intent, requestCode);
    }

 }

BaseFragment

public abstract class BaseFragment extends Fragment {
    protected BaseActivity mActivity;
    protected final String TAG = this.getClass().getSimpleName();

    @Override
    public void onAttach(Context Context) {
        super.onAttach(Context);
        mActivity = (BaseActivity) Context;
        Logger.d(TAG + ":onAttach:附加");
    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        if (isVisibleToUser){
            Logger.d(TAG + "不涉及UI:setUserVisibleHint:可见");
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Logger.d(TAG + ":onCreate");
    }

//    @Nullable
//    @Override
//    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//        View view = inflater.inflate(setView(), container, false);
//        return view;
//    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        Logger.d(TAG + ":onCreateView:创建视图");

        return super.onCreateView(inflater, container, savedInstanceState);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        Logger.d(TAG + ":onViewCreated:视图创建完毕");

//        init(view);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initData(savedInstanceState);
        Logger.d(TAG + ":onActivityCreated:页面完成");

    }

    @Override
    public void onStart() {
        super.onStart();
        Logger.d(TAG + ":onStart: 启动");
        if (getUserVisibleHint()){//涉及到UI
            Logger.d(TAG + ":onStart: 涉及到UI的数据填充。");
            httpDate();
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        Logger.d(TAG + ":onResume:绘制");
    }

    @Override
    public void onPause() {
        super.onPause();
        Logger.d(TAG + ":onPause: 暂停");

    }

    @Override
    public void onStop() {
        super.onStop();
        Logger.d(TAG + ":onStop: 停止");

    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Logger.d(TAG + ":onDestroyView:销毁视图");

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Logger.d(TAG + ":onDestroy: 销毁整个页面");

    }

    @Override
    public void onDetach() {
        super.onDetach();
        Logger.d(TAG + ":onDetach:分离");
    }

//    protected abstract int setView();

//    protected abstract void init(View view);

    protected abstract void initData(Bundle savedInstanceState);

    /**
     * 需要更新UI的网络数据
     */
    protected abstract void httpDate();

这里,有一个脚手架,每次直接调用就可以了。github-BaseAndroid

你可能感兴趣的:(Android)