Articles of mvp

视图之间的共享元素转换(不是活动或片段)

假设我正在使用基于视图的方法来开发Android应用程序,例如以下文章中所述: http : //corner.squareup.com/2014/10/advocating-against-android-fragments.html 所以现在我有两个全屏视图。 一个是可见的,包含一个图像网格。 另一个是隐藏的,是待点击图像的详细视图。 如果在单击网格中的图像时没有转换,则将隐藏网格视图并显示详细视图。 现在,如果我想要一些类似于网格视图中的小图像和详细视图中的较大图像之间的共享元素过渡的内容。 这样的事情可能吗?

Android MVP – 如何在活动演示者和片段演示者之间进行通信

我有一个包含3个片段的活动,目前我使用的是ViewPager。 我想实现MVP并在活动演示者和片段演示者之间进行通信,即: 将数据从活动演示者传递到片段演示者 从片段演示者向活动演示者发送事件 … 但我不知道如何以官方方式做到这一点。 我可以使用BusEvent,但我认为这不是一个好习惯。

Android MVP – 应避免在演示者中使用R.string引用吗?

为了完全将Android SDK与我的演示者类分离,我试图找出避免访问我们通常使用R的资源ID的最佳方法。 我以为我可以创建一个接口来访问像字符串资源这样的东西,但我仍然需要ID来引用字符串。 如果我要做的事…… public class Presenter { private MyView view = …; private MyResources resources = …; public void initializeView() { view.setLabel(resources.getString(LABEL_RES_ID); } } 我仍然必须拥有LABEL_RES_ID ,然后将其映射到我的资源桥中的R.string.label 。 这很酷,因为我可以在用其他东西进行unit testing时将其换掉,但我不想管理另一个到字符串值的映射。 如果我放弃并只使用R.string值,我的演示者将再次绑定到我的视图。 那不理想? 是否有一个更简单的解决方案,人们用来解决这个问题,以使他们远离演示者。 我不想以超出Android提供的方式管理字符串,因为我仍然希望将它们放在布局文件中并获得国际化等的好处。我想做一个可以与这个演示者一起工作的哑unit testing无需Android SDK即可生成R.java文件。 这要问太多了吗?

Android MVP从Presenter打开Activity,反模式?

如果从Presenter层打开一个Activity它会是一个反模式吗? 如果是这样,我应该从视图层管理应用程序的导航吗?

如何在没有Dagger的MVP中使用共享首选项并且不会导致Presenter依赖于上下文?

我正在尝试在没有Dagger的情况下实现MVP(用于学习目的)。 但我遇到了问题 – 我使用Repository模式从缓存(共享首选项)或网络获取原始数据: Shared Prefs| |RepositoryModelPresenterView Network| 但要把我的手放在共享首选项上,我必须把它放在某个地方 presenter = new Presenter(getApplicationContext()); 我使用onRetainCustomNonConfigurationInstance / getLastCustomNonConfigurationInstance对来保持Presenter“保留”。 public class MyActivity extends AppCompatActivity implements MvpView { @Override protected void onCreate(Bundle savedInstanceState) { //… presenter = (MvpPresenter) getLastCustomNonConfigurationInstance(); if(null == presenter){ presenter = new Presenter(getApplicationContext()); } presenter.attachView(this); } @Override public Object onRetainCustomNonConfigurationInstance() { return presenter; } //… } […]

android模型视图演示者/控制器示例

有没有关于如何最好地在任何地方构建Android应用程序的好例子或教程? 我是java和android的新手,我使用asp.net中的模型视图演示器和模型视图控制器的被动和监督控制器变体构建了winforms应用程序,但没有真正看到任何使用这些模式的android上的示例或代码。 人们如何在野外构建体面大小的Android应用程序。 有没有最好的做法,或者我应该严格坚持官方的Android文档。

我可以注册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) { […]