直接拿来用,BaseActivity的常用功能的抽取
2016-03-16 00:09
260 查看
在实际项目的开发过程中,我们经常封装所有Activity,Fragment的基类,通常取名为BaseActivity,BaseFragment,这样方便我们统一管理Activity和Fragment
BaseActivity.java:
BaseFragment.java
BaseActivity.java:
package com.cool.sleepgodlibrary.common; import android.app.Dialog; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.Button; import android.widget.ImageButton; import com.cool.sleepgodlibrary.ui.LoadingDialog; import com.cool.sleepgodlibrary.utils.ToastUtils; /** * Created by cool on 2017/3/17. */ public abstract class BaseActivity extends FragmentActivity implements View.OnClickListener { private Dialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 super.onCreate(savedInstanceState); setContentView(setLayoutResID());//设置布局文件 //为所有按钮设置点击事件 View rootView = findViewById(android.R.id.content);// android.R.id.content这个id可以获取到Activity的根View //寻找按钮组件,并设置点击事件 findButtonAndSetOnClickListener(rootView); initDialog(); setImmerse(); fillData(); initView(); initData(); initListeners(); } /** * 设置沉浸式状态栏 */ protected void setImmerse(){} private void initDialog() { if (dialog == null) { dialog = new LoadingDialog(this); } } public void showProgress() { dialog.show(); } public void hidderProgress() { dialog.dismiss(); } /** * 寻找按钮组件,并设置点击事件,子类如果需要响应按钮点击事件直接实现本类中的onClick(View v, int id)方法 * * @param rootView */ private void findButtonAndSetOnClickListener(View rootView) { if (rootView instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) rootView; for (int i = 0; i < viewGroup.getChildCount(); i++) { View child = viewGroup.getChildAt(i); if (child instanceof Button || child instanceof ImageButton) { child.setOnClickListener(this); } else if (child instanceof ViewGroup) { findButtonAndSetOnClickListener(child); } } } } /** * 此方法的目的是子类使用此方法findViewById不再需要强转,注意:接受类型一定不要写错 * * @param id * @param <T> * @return */ public <T> T findView(int id) { T view = (T) findViewById(id); return view; } /** * 初始化Listener,需要实现是覆盖 */ public void initListeners() { } /** * 设置布局文件 * * @return 布局文件ID */ public abstract int setLayoutResID(); /** * 初始化view,必须实现 */ public abstract void initView(); /** * 填充数据 */ private void fillData() { } /** * 初始化数据 */ public void initData() { } /** * 打印吐司 * * @param msg */ public void showToast(String msg) { ToastUtils.showToast(this,msg); } /** * 子类实现此方法处理点击事件 * * @param v * @param id */ public void onClick(View v, int id) { } @Override public void onClick(View v) { onClick(v, v.getId()); } }
BaseFragment.java
package com.cool.sleepgodlibrary.common; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.cool.sleepgodlibrary.ui.LoadingDialog; import com.cool.sleepgodlibrary.utils.ToastUtils; /** * Created by cool on 2017/3/17. */ public abstract class BaseFragment extends Fragment implements View.OnClickListener { public View mView; public Context mContext; private Dialog dialog; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mContext = getActivity(); mView = inflater.inflate(setLayoutResID(), null); initDialog(); fillData(); initView(); initListener(); initData(); return mView; } /** * 设置布局文件 * * @return 布局文件ID */ public abstract int setLayoutResID(); protected abstract void initView(); /** * 填充数据 */ private void fillData() { } public void initData() { } public void initListener() { } public <T> T findView(int id) { T view = (T) mView.findViewById(id); return view; } /** * 在屏幕中央打印吐司 * * @param msg */ public void showToast(String msg) { ToastUtils.showToast(mContext,msg); } /** * 子类实现此方法处理点击事件 * * @param v * @param id */ public void onClick(View v, int id) { } @Override public void onClick(View v) { onClick(v, v.getId()); } private void initDialog() { if (dialog == null) { dialog = new LoadingDialog(mContext); } } public void showProgress() { dialog.show(); } public void hidderProgress() { dialog.dismiss(); } }
相关文章推荐
- Python学习笔记(2):函数的使用
- 判断String字符串是不是为空
- 链表元素的比较和删除
- 开始吧
- java 反转二叉树算法
- UIWindow的研究
- 【JAVA集合】HashMap源码分析
- 最新精简型Linux桌面环境大比拼:LXDE Vs Xfce Vs MATE
- 正则表达式如何在PHP里灵活的应用
- Python3中的真除和Floor除法用法分析
- Python保存MongoDB上的文件到本地的方法
- Python使用tablib生成excel文件的简单实现方法
- PHP 二维数组和三维数组的过滤
- Laravel实现构造函数自动依赖注入的方法
- PHP与Ajax相结合实现登录验证小Demo
- Laravel中注册Facades的步骤详解
- Laravel中Trait的用法实例详解
- PHP 中提示undefined index如何解决(多种方法)
- Laravel执行migrate命令提示:No such file or directory的解决方法
- PHP5.5迭代生成器用法实例详解