一个好的activity可以更方便的管理app的activity,而且使代码不会写的那么臃肿,更有逻辑性。
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,如果一步步来。代码简洁很多,也更容易管理