当前位置:网站首页>BaseActvity的抽取
BaseActvity的抽取
2022-08-11 05:31:00 【lang_z】
BaseActivity抽取
BaseActivty抽取的作用
- 进行代码的规范;
- 处理形同的逻辑;
- 简化代码;
代码的规范:主要吧activity经常做的动作抽取到各自的方法中,例如设置actvitiy的布局界面,初始化view,初始化监听,初始化数据。
处理相同的逻辑:比如每一个界面都有一个返回的按钮,可以吧这个操作放到BaseActvity中进行操作。
简化代码:这里面可以处理弹Toast和打log的操作;
废话不多说,明白的BaseActivity的作用,我们直接上代码:
另附一个log工具类:import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Toast; public abstract class BaseActivity extends Activity implements OnClickListener{ /** * activity的基类 * 1.规范代码 * getLayoutResId(); * initView(); * initListener(); * initData(); * 2.处理相同逻辑 * 视频播放界面,音频播放界面,都有返回按钮 * 3.简化代码 * 吐司 * log * */ // 重新activity的方法; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ---------------规范代码------------// // 设置界面的布局; setContentView(getLayoutResId()); // 初始化view,一般做findViewById的操作; initView(); // 初始化监听, initListener(); // 初始化数据; initData(); // ---------------窗处理相同的逻辑--------// // 处理相同逻辑 dealCommon(); } // ---------------规范代码------------// /** * 进行界面的布局设定; * * @return 界面的布局 */ public abstract int getLayoutResId(); /** * 初始化view的操作; */ public abstract void initView(); /** * 初始化监听的操作 */ public abstract void initListener(); /** * 初始化数据的操作 */ public abstract void initData(); // ---------------窗处理相同的逻辑--------// /** * 处理相同的逻辑,主要处理的是返回按钮的方法; */ private void dealCommon() { // 处理相同的逻辑,返回按钮;要想处理返回按钮,就必须给每一个返回按钮定义相同的id; /* * 预定义id可以在values文件夹下面新建一个ids.xml文件; 例: * * * * */ View backView = findViewById(R.id.back); //之后给返回按钮设置监听;不是每一个界面都会有返回按钮,所以在设置监听的时候,要判断是否存在; if(backView!=null){ //如果为空的话就设置监听, backView.setOnClickListener(this); } } //重写监听的方法; @Override public void onClick(View v) { switch (v.getId()) { //判断是否是返回按钮; case R.id.back: finish(); break; default: //如果不是返回按钮就调用这个方法; onInnerClick(v); break; } } /** * 内部的点击监听回调 * 子类如果有非返回按钮 * @param v */ public void onInnerClick(View v) { } /** * 弹出吐司 * @param msg : 吐司内容 */ public void showToast(String msg){ Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(); } /** * log */ public void logI(String msg){ LogUtils.i(getClass().getSimpleName(), msg); } }基本的activity基类的抽取,有问题的小伙伴可以加我的qq:281788747,请标明技术人士,谢谢import android.util.Log; public class LogUtils { //定义一个开关,等项目上线之后就不会打log的操作了;把开关给成false private static final boolean ENABLE = true; /** * 根据自己定义的标记弹log * @param tag 标记 * @param msg 信息 */ public static void i(String tag, String msg) { if (ENABLE) { Log.i(tag, msg); } } /** * 根据类名打log * @param cls 类名 * @param msg 信息 */ public static void i(Class cls, String msg) { if (ENABLE) { Log.i("itcast_" + cls.getSimpleName(), msg); } } }
边栏推荐
- 将一个excel文件中多个sheet页“拆分“成多个“独立“excel文件
- The official website of OpenMLDB is upgraded, and the mysterious contributor map will take you to advance quickly
- Lua 字符串
- 【LeetCode-202】快乐数
- swagger常用注释API @ApiModel、@ApiModelProperty的用法
- 【LeetCode-455】方法饼干
- Scene-driven feature calculation method OpenMLDB, efficient implementation of "calculate first use"
- 程序集与反射技术(C#)
- Lua 快速入门(六)——基础OOP
- 微信小程序_开发工具的安装
猜你喜欢
随机推荐
解决AttributeError: ‘NoneType‘ object has no attribute ‘val‘ if left.val!=right.val:Line 17 问题
【转】Unity C# 关于Attribute的使用(超实用)
The official website of OpenMLDB is upgraded, and the mysterious contributor map will take you to advance quickly
【LeetCode-75】 颜色分类
Day 73
Jetpack's dataBinding
c语言-数据存储部分
Lua 元表(Metatable)
欧拉角、四元数与旋转
C-8月1日-递归与动态内存管理
将一个excel文件中多个sheet页“拆分“成多个“独立“excel文件
Lua 快速入门(一)——基础语法
基于微信小程序云开发实现的电商项目,可以自行定制开发
函数使用记录
The mount command - mounted read-only, solution
Day 83
自己动手写RISC-V的C编译器-00环境配置
USB in NRZI to encode the data
Day 79
Manufacturer Push Platform-Huawei Access









