RxAndroid+Retrofit+GreenDao+MVP框架---通用基类封装(二)
2016-12-16 14:02
337 查看
打算分为通用的方法,基类封装;网络请求框架封装(RxAndroid+Retrofit);数据库操作封装(GreenDao);
查看完整框架可以到GitHub下载https://github.com/850125665/WeatherApp
解放双手,减少在AndroidManifes.xml配置activity
一个应用有多个activity就要在AndroidManifes.xml重复配置,如何减少在AndroidManifes.xml配置呢,主要是通过一个activity的复用,每个页面都能复用一个activity。TerminalAcitvity.java相关代码
public class TerminalActivity extends BaseFragmentActivity { public static String FRGMENT_CLASS = "fragment_class"; /** * 封装intent */ public static class WrapIntent{ private Intent intent; private Context mContext; public WrapIntent(Context context, Bundle bundle, Class<? extends Fragment> fragmentClass, Class<? extends Activity> activity){ if(context==null){ context= AppInfo.getAppInstant().getMyContext(); } mContext= context; if(activity==null){ activity=TerminalActivity.class; } intent = new Intent(context,activity); if(bundle==null){ bundle = new Bundle(); } bundle.putSerializable(FRGMENT_CLASS,fragmentClass); intent.putExtra(BUNDLE_DATA,bundle); } /** * 跳转 */ public void show(){ if(!(mContext instanceof Activity)){ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } mContext.startActivity(intent); } /** * activity跳转带foresult * @param requestCode */ public void showForResult(int requestCode){ if(!(mContext instanceof Activity)){ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } ((Activity)mContext).startActivityForResult(intent,requestCode); } /** * fragment跳转带foresult * @param requestCode * @param fragment */ public void showForResultFromFragment(int requestCode,Fragment fragment){ fragment.startActivityForResult(intent,requestCode); } } /** * 跳转,可跳转到某个activity * @param context * @param fClass * @param bundle * @param activity */ public static void show(Context context,Class<? extends Fragment> fClass,Bundle bundle,Class<? extends Activity> activity){ new WrapIntent(context,bundle,fClass,activity).show(); } /** * 跳转到指定的TerminalActivity * @param context * @param fClass * @param bundle */ public static void show(Context context,Class<? extends Fragment> fClass,Bundle bundle){ new WrapIntent(context,bundle,fClass,TerminalActivity.class).show(); } /** * activity跳转带回复 * @param context * @param fClass * @param bundle * @param requestCode */ public static void showForResult(Context context,Class<? extends Fragment> fClass,Bundle bundle,int requestCode){ new WrapIntent(context,bundle,fClass,TerminalActivity.class).showForResult(requestCode); } /** * fragment跳转带回复 * @param context * @param fClass * @param bundle * @param fragment * @param requestCode */ public static void showForResultFromFragment(Context context,Class<? extends Fragment> fClass,Bundle bundle,Fragment fragment,int requestCode){ new WrapIntent(context,bundle,fClass,TerminalActivity.class).showForResultFromFragment(requestCode,fragment); } /** * xml文件id * * @return */ @Override protected int getContenViewId() { return R.layout.activity_terminal; } /** * 初始化识图 */ @Override public void initView() { } @Override public void receptIntent(Bundle bundle) { super.receptIntent(bundle); initFragment(bundle); } /** * 初始化fragment * @param bundle */ private void initFragment(Bundle bundle) { Fragment fragment = null; Log.v(TAG,"initFragment"); try { Class fClass = (Class) bundle.getSerializable(FRGMENT_CLASS); fragment = (Fragment) fClass.newInstance(); } catch (InstantiationException e) { e.printStackTrace(); finish(); } catch (IllegalAccessException e) { e.printStackTrace(); finish(); } fragment.setArguments(bundle); FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.fl_content,fragment); fragmentTransaction.commitAllowingStateLoss(); } }
主要是通过FragmentManager.replace去替换 FrameLayout内容。所以我们只需在TerminalAcitvity加一个空的FrameLayout布局,每次启动该activity时替换下布局。
activity_terminal.xml布局如下
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fl_content" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout>
相关文章推荐
- RxAndroid+Retrofit+GreenDao+MVP框架---通用基类封装(三)
- RxAndroid+Retrofit+GreenDao+MVP框架---通用基类封装(一)
- 【MVP+Retrofit+RxAndroid+dagger2】读易读应用框架笔记(一)MVP应用篇
- 商业级开发框架(MVP+RxJava+Retrofit+GreenDAO)详解
- [置顶] MVP实战心得(三)---封装Retrofit2.0+RxAndroid+RxBus
- Android 基于 MVP 框架的下拉刷新、上拉加载页面,View和Presenter层基类封装
- 【MVP+Retrofit+RxAndroid+dagger2】读易读应用框架笔记(二)网络请求与回调篇
- 【MVP+retrofit+rxAndroid+dagger2】读易读应用框架笔记(三)完结篇
- MVP实战心得(三)---封装Retrofit2.0+RxAndroid+RxBus
- android的技术分解以及Retrofit源码分析以及MVP框架封装使用
- MVP实战心得(三)---封装Retrofit2.0+RxAndroid+RxBus
- android架构封装(mvp + rxandroid + Retrofit2.0 )
- Android数据库框架GreenDao封装使用,易理解、易扩展
- Android Sqlite框架 GreenDao的源码分析笔记
- Android ORM数据库框架之-greenDao(四)
- Retrofit2.0结合RxAndroid实现二次封装
- 浅谈Android网络封装框架Retrofit
- Retrofit2.0+RxJava+RxAndroid——强强联合的网络请求框架
- Rxjava + retrofit + dagger2 + mvp搭建Android框架
- Android数据库greenDAO框架用法和源码分析