Android Fragment MVC思路
来源:互联网 发布:moment.js 计算时间差 编辑:程序博客网 时间:2024/06/05 20:29
Android 中 Activity
显示界面可以由几个Fragment拼成的
每个Fragment都有自己的布局和处理布局的逻辑。
使用了Fragment将视图分拆成模板然后处理逻辑就好像
在Activity这个蓝图上拼接板块一样。因为Fragment还可以在其他界面重用。感觉满满的View解耦。
下面给出一种辅助Fragment处理逻辑的模式方法。看上去遵循了MVC的思想。
Presenter(C)——Fragment(V)
public abstract class BaseFragment<T extends Presenter<U>, U extends Ui> extends Fragment { private T presenter; public abstract T createPresenter(); public abstract U getUi(); protected BaseFragment() { presenter = createPresenter(); } public T getPresenter() { return presenter; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onAttach(Context context) { super.onAttach(context); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); presenter.onUiReady(getUi()); } @Override public void onDestroyView() { super.onDestroyView(); presenter.onUiDestroy(getUi()); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); }}
UI接口 没有方法。仅仅起令牌的作用
public interface Ui {}
Presenter
public abstract class Presenter<U extends Ui> { private U mUi; public void onUiReady(U ui) { mUi = ui; } public final void onUiDestroy(U ui) { onUIUnready(ui); mUi = null; } public void onUIUnready(U ui) { } public U getUi() { return mUi; }}
抽象出基础类放到UIBase包内
使用
public class ChatSessionFragment extends BaseFragment<ChatSessionPresenter, ChatSessionPresenter.ChatSessionUi> implements ChatSessionPresenter.ChatSessionUi {@Overridepublic ChatSessionPresenter createPresenter() { return new ChatSessionPresenter();}@Overridepublic ChatSessionPresenter.ChatSessionUi getUi() { return this;}}public class ChatSessionPresenter extends Presenter<ChatSessionPresenter.ChatSessionUi>{@Overridepublic void onUiReady(ChatSessionUi ui) { super.onUiReady(ui); AppApplication.getInstance().getmMessageBroadcastReceiver().addMessageNotiferListener(this);}@Overridepublic void onUIUnready(ChatSessionUi ui) { super.onUIUnready(ui);}public interface ChatSessionUi extends Ui { Context getContexts(); void refreshSessionList(List<Session> list);}}
阅读全文
0 0
- Android Fragment MVC思路
- 【总结】Android Fragment MVC思路
- android中fragment实战解决思路
- android组件 fragment 重叠现象解决思路
- PHP实现MVC思路
- Fragment切换页面思路整理
- Android 中ViewPager+fragment报异常:IllegalStateException:Can't change tag of fragment的一种解决思路
- Android Activity与装载ViewPager中的Fragment 通信 的两种思路
- Android Fragment---创建Fragment
- Android Fragment---管理Fragment
- Android Fragment---创建Fragment
- Android Fragment---管理Fragment
- (Android) Fragment
- Android Fragment
- Android fragment
- Android Fragment
- Android Fragment
- android Fragment
- 机器学习mxnet mac下编译问题
- javaScript中定时器的用法和原理
- 驱动框架7——使用gpiolib完成led驱动
- 【Unity3d】Unity3d引擎的新纪元——Unity3d 2017
- 2——语音分析——逻辑架构
- Android Fragment MVC思路
- 白云苍狗,雨飘飘... ...
- 绝对定位与相对定位
- 驱动框架8——将驱动集成到内核中
- numpy学习笔记一(n维数组及元素级数组函数)
- VS2010项目文件被卸载的问题
- Android MVP模式实战练习之一步一步打造一款简易便笺app(二)
- vb.net 教程 4-9 二进制文件读写 1
- What is a Servlet?