Mil*_*nNz 12 mvp android android-fragments android-activity android-mvp
我一直在关注Google提供的MVP设计模式 来重构我的应用程序.我有一个MainActivity和许多片段,我为每个片段创建活动似乎很麻烦,所以我一直在考虑在片段中注册演示者.我所看到的是每个片段都注册了它自己的演示者,但我不确定它有多大的错误...... :)
所以这是我的演示者:
public class FirstPresenter implements FirstContract.Presenter {
private final FirstContract.View mView;
public FirstPresenter(FirstContract.View view) {
mView = view;
}
@Override
public void start() {
Log.e(TAG, "Start");
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的片段:
public class FirstFragment extends Fragment implements FirstContract.View {
private FirstContract.Presenter mPresenter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container
, Bundle savedInstanceState) {
...
// I register firstFragment's presenter here.
mPresenter = new FirstPresenter(this);
...
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,这是正确的方法吗?我可以在活动中将Presenter注册到Fragment中吗?如果不是正确的方法,是否有一些很好的例子来处理一个活动和多个片段的MVP?
谢谢你们,BR!
sav*_*ion 19
正如您在Google的示例中所见(https://github.com/googlesamples/android-architecture),请Activities创建Presenters.还Views附加到Activity并Presenters获取views(Fragments)作为参数.
在Fragment事务提交或Fragment(查看)状态恢复后Presenters创建并将Fragments(视图)作为参数而不是调用
view.setPresenter(T presenter);
Run Code Online (Sandbox Code Playgroud)
视图方法并Presenters注册查看.
我想创建Presenter的Fragment是不是一个好的做法.首先,它们是分开的层.这对于关注点分离是非法的.其次,如果您创建了FragmentPresenter ,则将Presenter的生命绑定到视图,LifeCycle并在Fragment销毁和重新创建时,创建一个新的演示者,但它们是不同的层.
该模型是定义要在用户界面中显示或以其他方式操作的数据的接口.
演示者对模型和视图起作用.它从存储库(模型)中检索数据,并将其格式化以在视图中显示.
视图是一个被动接口,它显示数据(模型)并将用户命令(事件)路由到演示者以对该数据进行操作.
因此Activity可以充当overall controller它创建Presenters和Views和连接它们.
如果我们谈论您的问题,是的,您可以在片段中注册演示者.但是,您应该避免在用作视图的片段中创建演示者.
但是在Android社区中有很多关于MVP模式的方法,如下所示. https://plus.google.com/communities/114285790907815804707
为什么活动不是ui元素? http://www.techyourchance.com/activities-android/
| 归档时间: |
|
| 查看次数: |
10776 次 |
| 最近记录: |