Android(安卓)BaseActivity和BaseFragment封装写法!
16lz
2021-01-26
一,前言:在常用的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(安卓)GridView等控件的属性集合
- android分享软件功能的实现
- 安卓开发----TextView控件属性列表
- Android(安卓)WebView怎么样嵌套Html
- EditText_XML属性
- Android中TextView的某一关键字高亮显示
- 物联网温湿度显示控制项目(网页、Android双端显示&搭载linux平台
- Android(安卓)开发初级入门:注册谷歌地图 API 密钥和显示谷歌地图
- Android(安卓)UI【Android(安卓)仿Iphone文件夹分裂效果】