Articles of mvp

我可以注册MVP Presenter里面的片段

我一直在关注Google提供的MVPdevise模式,以重构我的应用程序。 我有一个MainActivity和许多碎片,对于每个片段创build活动似乎都很麻烦,所以我一直在考虑在片段中注册演示者。 我看到的是每个片段都注册了它自己的主持人,但是我不确定它有多less错误… 🙂 所以这里是我的演示者: 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"); } } 这是我的片段: public class FirstFragment extends Fragment implements FirstContract.View { private FirstContract.Presenter mPresenter; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container , Bundle savedInstanceState) […]

匕首2和界面的实现

我有一个简单的Dagger 2testing设置,基于http://konmik.github.io/snorkeling-with-dagger-2.html 。 它注入一个PreferenceLogger,输出所有的偏好。 在注入的类中,我可以@注入更多的类。 public class MainActivity extends Activity { @Inject PreferencesLogger logger; @Inject MainPresenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { MyApplication.getComponent().inject(this); presenter.doStuff(); logger.log(this); } } public class PreferencesLogger { @Inject OkHttpClient client; @Inject public PreferencesLogger() {} public void log(Contect context) { // this.client is available } } 当我运行这个,logging器被设置,并在PreferencesLogger.log OkHttpClient被正确设置。 所以这个例子按预期工作。 现在我正在尝试获得一个MVP结构。 有一个MainPresenter接口和一个实现。 […]

Android MVP解释

我试图了解什么是最好的方式来编写一个“干净的”Android应用程序。 我发现了一篇关于它在哪里使用3层架构的有趣文章 。 现在我读了一下,android使用MVPdevise模式并试图理解这一点。 我理解MVP原则(在android环境中)的方式是: 模型层是逻辑类 主持人是“链接到”XML(活动)的类, 被动的观点是XML的。 它是否正确? 如果这是正确的, 那么 3层模型是否完全符合MVP原则也是正确的 ,因为: 来自3层架构的表示层适合MVP的演示者层 来自三层架构的业务和数据层完全符合MVP的模型部分? 我希望我的问题很清楚,因为这对我来说是一个复杂的话题。 也许这清除了我的视野(想法)关于这个..

主持人用匕首注射2

我刚开始使用匕首2,我发现在线数以千计的指导每一个不同的实现,我现在有点困惑。 所以基本上这就是我现在写的: AppModule.java: @Module public class AppModule { Application mApplication; public AppModule(Application application) { mApplication = application; } @Provides @Singleton Application providesApplication() { return mApplication; } } DataModule.java: @Module public class DataModule { private static final String BASE_URL = "http://beta.fridgewizard.com:9001/api/"; @Provides @Singleton NetworkService provideNetworkService() { return new NetworkService(BASE_URL); } @Provides @Singleton SharedPreferences provideSharedPreferences(Application app) { […]

Android MVP – 活动应该是视图还是演示者?

我想用MVP模式实现我的下一个应用程序,所以我开始阅读一些关于如何实现的文章。 对我来说主要的问题是这种模式有不同的方法。 有人说我们应该把活动当作一种看法,但其他一些活动应该是一个主持人。 作为一个视图的活动在这里描述: MVP Android和它是有道理的。 但另一方面,我发现这个答案与几个upvotes https://stackoverflow.com/a/7609943和有人说,活动应该是一个主持人。 有没有人有这种模式的经验?

Dagger 2中的Android MVP – 具有多个片段的活动

我一直在寻找与Dagger 2 MVP的谷歌Android架构示例: https://github.com/googlesamples/android-architecture/blob/todo-mvp-dagger/todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksActivity.java 但是,这个例子并不重要 – 每个Activity只有一个片段,而Dagger组件是在Activity中构build的,并且用于为片段的Presenter注入Activity。 我已经尝试过构build这个示例,将多个片段添加到一个活动并在它们之间导航。 由于每个片段都有自己的演示者,所以我将匕首组件构build到片段中。 所以现在我有: FragmentCallback(提供加载fragment1和fragment2的方法的接口) 活动(实现FragmentCallback) Fragment1(实现视图界面) Fragment1Contract(定义视图和演示者界面) Fragment1Presenter(实现演示者界面) Fragment1Component(注入Fragment1) Fragment1Module(提供视图和演示者) Fragment2 Fragment2Contract(定义视图和演示者界面) Fragment2Presenter(实现演示者界面) Fragment2Component(注入Fragment2) Fragment2Module(提供视图和演示者) 该活动做的很less,它只是加载第一个片段,并实现视图可以用来切换到另一个片段的FragmentCallback。 第一个片段有一个button,它使用FragmentCallback加载第二个片段 – 片段通过投射Activity来获取片段 public void onAttach(Context context) { super.onAttach(context); callback = (FragmentCallback) context; } 我在这里的一个明智的轨道? 虽然代码看起来干净的MVP我缺less一些匕首组件和模块? 谢谢。 更新 通过为活动创build一个组件和模块,我已经改善了一些情况。 每个片段仍然构buildDagger上下文,但是我不再在演示者构造函数中注入视图(片段) – 当片段构build上下文时,自身注入(因此它具有演示者),然后调用presenter.init(this)让主持人现在有了这个看法。 这很好地减less了类的数量,下一步就是只尝试在活动中构build组件,并让片段使用它来注入自己(而不必构build新组件)。

多个活动/片段和模型视图演示者模式

首先,我知道使用Model View Presenter有不同的实现,在我的脑海里,只要你具有明确定义的层次和完成他们的指定angular色,那么你如何实现这个模式是可以解释的。 我已经在只有一个Activity很多应用程序中实现了这个模式。 我现在开始了一个新的项目,它有多个活动和附加Fragments ,包括嵌套片段( ViewPager )。 我现在正在试图把MVP翻译成这个项目,我打了一个概念墙,想要一些指导和见解。 到目前为止,我已经创build了上述结构,并开始与View&Presenter(不pipeActivity或Fragment )进行1:1的关系。 我觉得这是好的,但是如果我举个例子,我发送了一个请求,从Activity视图到它的Presenter,这个Activity视图返回一个结果,我将如何去传播结果,即更新所有其他Activities / Fragments当前不处于Paused()或Stop()状态。 我觉得在这种情况下,应该有一个中央主持人,更新所有必要的活动和片段的意见,但我不知道如何去做这件事。 当前,当创build每个Activity和Fragment ,它将创build一个Presenter类的新实例,将其作为参考传递(Activities和Fragments实现自己的接口),演示者将其存储为WeakReference并可以在调用相关接口方法返回结果。 根据文档,每当Fragments想互相沟通和附加的Activity你应该使用callback接口。 考虑到这一点,我应该有一个Activity实现的callback接口和Fragmentscallback函数来实现请求,所以实际上只有Activity会有一个Presenter和Model层,Fragments必须callback才能发出各种请求? 对不起,如果这听起来有点混乱,希望这是明确的,以了解我想达到什么目的,如果我正在思考沿着正确的路线……或完全离谱!

Android MVP,在那里检查互联网连接

我在一个Andorid应用程序上实现了MVP模式,并且对于检查互联网连接的最佳位置有疑问。 在进行任何networking通话之前,我通常会检查是否有互联网连接。 那么,我应该在活动中还是在演示者中检查它? 我觉得Presenter会是个不错的地方,所以它决定要做什么,但是我不是100%确定的。如果我应该把它放在活动中,并避免与Presenter打个电话。

与Android的匕首:如何使用MVP注入上下文?

在开发Android应用程序时,我偶然发现了一个问题。 我刚开始使用Dagger,所以我知道一些基本的概念,但是在教程和用例范围之外使用它时,事情就变得不那么清晰了。 所以要切中要害。 在我的应用程序中,我使用了这个博客中描述的MVP: http : //antonioleiva.com/mvp–android/ 所以起初我是将Interactor类(处理数据的类)注入Presenter类,一切正常。 但后来我实现了使用SQLite数据库的方法,所以现在需要在Interactor类中使用Context。 我无法弄清楚我应该如何正确地做到这一点? 我的临时解决方法是从我的应用程序中排除Dagger,并在创buildPresenter类时在构造函数中传递Contextvariables,然后在Presenter中创buildInteractor类,但是我想使用Dagger。 所以我目前的应用程序看起来像这样。 MyActivity implements MyView { MyPresenter p = new MyPresenter(this, getApplicationContext()); } MyPresenter中的构造函数 MyPresenter(MyView view, Context context) { this.view = view; MyInteractor i = new MyInteractor(context); } 而在MyInteractor构造函数中,我将Context分配给一个私有variables。 我只需要将MyPresenter注入MyInteractor ,因为这是需要针对不同实现进行testing的应用程序的一部分。 但是,如果它也可以注入MyPresenter MyActivity ,那将是伟大的:) 我希望有人有一些经验,我想要实现:)

Android UI开发是否适合于独立的devise模式?

Android平台是否适合像MVC或MVP这样的UI编程风格? 我的用户界面的大部分经验是在一个非常老的embedded式设备上的意大利面代码或与MVP的GWT,所以我不知道从哪里开始。