直接拿来用,BaseActivity的常用功能的抽取
来源:互联网 发布:淘宝网购物女装衬衫 编辑:程序博客网 时间:2024/05/21 17:08
在实际项目的开发过程中,我们经常封装所有Activity,Fragment的基类,通常取名为BaseActivity,BaseFragment,这样方便我们统一管理Activity和Fragment
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(); }}
1 0
- 直接拿来用,BaseActivity的常用功能的抽取
- 继承与BaseActivity的抽取
- ## 抽取BaseActivity解放你的titlebar ##
- 我常用的BaseActivity
- 直接拿来用的前端技术
- 直接拿来用的JS技巧
- 压缩文件的Demo,直接拿来用
- Android学习笔记--BaseActivity和BaseFragment的再抽取
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目 !
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- caffe代码阅读3:data_reader、internalthread以及blocking_queue的实现细节-2016.3.15
- C语言实现二叉查找树(BST)的基本操作
- 单链表的就地逆置
- 史丰收速算
- IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)
- 直接拿来用,BaseActivity的常用功能的抽取
- UIWindow的研究
- 自以为是的愤世嫉俗
- code vs 1922 骑士共存问题
- iOS 应用程序内部国际化,不跟随系统语言
- Python学习笔记(2):函数的使用
- 时钟动画
- VC++6.0 afxres.h,mfc42d.lib错误解决方法
- 顺序表的插入