Android基类Activity的设计
2016-08-03 14:34
375 查看
一个好的activity可以更方便的管理app的activity,而且使代码不会写的那么臃肿,更有逻辑性。
代码比较简单,相信新手都会看得懂。。
这里最主要的Intent跳转的内部类,这里采用的建造者模式。
然后你要使用就可以这样使用
如果需要传值过去就可以这样
而你如果需要回到,只需要设置true和带去requestCode
这样就不用像以前要new出一个Intent,如果一步步来。代码简洁很多,也更容易管理
public abstract class AbsBaseActivity extends FragmentActivity{ public abstract void initData() throws Exception; public abstract void setLinterner(); public String TAG=this.getClass().getName(); ; public MyProgressDialog progressDialog; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { initData(); StaticMethod.addActivity(this); } catch (Exception e) { Log.e(TAG,e.getLocalizedMessage()); } setLinterner(); } /** * 提示对话框 * @param value */ public void showToast(String value){ Toast.makeText(this,value,Toast.LENGTH_SHORT).show(); } @Override protected void onResume() { super.onResume(); // umeng MobclickAgent.onResume(this); } @Override protected void onStart() { super.onStart(); // umeng MobclickAgent.onPause(this); } public void finshAll(){ StaticMethod.finshAllActivity(); } //获取屏幕的宽度 public static int getScreenWidth(Context context) { WindowManager manager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); return display.getWidth(); } //获取屏幕的高度 public static int getScreenHeight(Context context) { WindowManager manager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); return display.getHeight(); } public void LogI(String value){ Log.i(TAG,value); } public void LogE(String value){ Log.e(TAG,value); } /** * 创建一个公共的intent类 */ public class Builder{ private Intent intent; private boolean isForResult; //是否需要回调 private int requestCode;//请求标记 public Builder(Class<? extends Object> c){ intent=new Intent(AbsBaseActivity.this,c); } /** * 传入bundle * @param key * @param bundle */ public Builder build(String key,Bundle bundle){ getIntent().putExtra(key,bundle); return this; } /** * 传入String类型 * @param key * @param value * @return */ public Builder build(String key,String value){ getIntent().putExtra(key,value); return this; } /** * 传入int类型 * @param key * @param value * @return */ public Builder build(String key,int value){ getIntent().putExtra(key,value); return this; } /** * 传入double类型 * @param key * @param value * @return */ public Builder build(String key,double value){ getIntent().putExtra(key,value); return this; } /** * 传入long类型 * @param key * @param value * @return */ public Builder build(String key,long value){ getIntent().putExtra(key,value); return this; } /** * 传入Serializable类型 * @param key * @param value * @return */ public Builder build(String key,Serializable value){ getIntent().putExtra(key,value); return this; } /** * 传入Parcelable类型 * @param key * @param value * @return */ public Builder build(String key,Parcelable value){ getIntent().putExtra(key,value); return this; } /** * 是否有回调 * @param forResult * @return */ public Builder build(boolean forResult){ isForResult=forResult; return this; } /** * 设置请求参数 * @param requestCode * @return */ public Builder build(int requestCode){ this.requestCode=requestCode; return this; } /** * 开启activity */ public void startActivity(){ if (isForResult){ AbsBaseActivity.this.startActivity(getIntent()); }else { AbsBaseActivity.this.startActivityForResult(getIntent(),requestCode); } } private Intent getIntent(){ return intent; } } }
代码比较简单,相信新手都会看得懂。。
这里最主要的Intent跳转的内部类,这里采用的建造者模式。
然后你要使用就可以这样使用
new MainActivity.Builder(AddFriendActivity.class) .startActivity();
如果需要传值过去就可以这样
new MainActivity.Builder(AddFriendActivity.class) .build("key","asdf") .build("int",122) .startActivity();
而你如果需要回到,只需要设置true和带去requestCode
/** * 是否有回调 * @param forResult * @return */ public Builder build(boolean forResult){ isForResult=forResult; return this; } /** * 设置请求参数 * @param requestCode * @return */ public Builder build(int requestCode){ this.requestCode=requestCode; return this; }
这样就不用像以前要new出一个Intent,如果一步步来。代码简洁很多,也更容易管理
相关文章推荐
- Android App框架设计 基类BaseActivity
- Android App框架设计之编写基类BaseActivity
- Android设计模式之Activity基类封装
- Android App框架设计之编写基类BaseActivity
- Android中基类BaseActivity的设计与实现
- android 新建项目基类设计
- android 在基类activity中注册BroadcastReceiver,子activity类实现响应
- 如何利用Activity的Dialog风格完成弹出框设计 “第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇 ”
- Android:自定义Activity基类,复用布局/控件,减少设置控件的重复代码,onPostOnCreate
- Android完全退出多个activity程序设计
- android 新建项目基类设计
- Android Activity 和 Task 设计指导
- Android 自定义Activity基类与TitleBar
- 如何利用Activity的Dialog风格完成弹出框设计 “第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇 ”
- Android教程 -04 启动其它Activity,静态工厂设计模式传递数据
- Android教程 -04 启动其它Activity,静态工厂设计模式传递数据
- Android基础知识之四大组件Activity(三)多个Activity交互的生命周期与设计思想
- Android:如何设计一个完全不可见的Activity?
- Android Activity 和 Task 设计指导
- 【Android进阶】为什么要创建Activity基类以及Activity基类中一般有哪些方法