问题标签 [mortar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 迫击炮/流在后台保存视图和演示者
我正在玩 Mortar / Flow / Dagger2。
我的应用有 2 个屏幕:
屏幕 1 显示了谷歌地图。我直接使用 MapView 对象而不是 MapFragment,并且我将它正确连接到根活动生命周期事件。
屏幕 2 显示了来自地图标记的一些信息。我们从屏幕 1 到屏幕 2 通过
Flow.get(context).goTo(new Screen2());
问题是,当我从屏幕 2 回到屏幕 1 时,使用Flow.get(context).goBack();
,屏幕 1 和它的 MapView 从头开始重新创建,失去以前的状态等等。确实,我可以看到 screen1 的视图和它的演示者都被破坏了当我导航到屏幕 2 时。因此,返回屏幕 1 会重新创建所有内容。
我知道有一种机制可以保存和恢复 Flow 示例中的视图状态(我正在使用它),但这似乎还不够。
有没有办法在 backstack 中保存和恢复屏幕 1 的视图和演示者的状态?为了拥有正确的导航工作流程,就像使用 Activity1 和 Activity2 自然完成一样。
谢谢!
android - 如何为 ActionBarDrawerToggle 传递对 Activity 的引用?
我正在尝试使用 Square 的 Mortar 和 Flow
问题是:ActionBarDrawerToggle
从 support-v7 需要有对 Activity 的引用
但是view.getContext()
返回PathContext
所以我得到
ClassCastException: flow.path.PathContext cannot be cast to android.app.Activity
那么如何获得对活动的引用?
android - 开始使用 Flow 和 Mortar
我一直在网上搜索有关在 Android 中使用 Mortar 和 Flow 的简化指南,但只是找到了一些解释的代码片段。
真的很难理解这个库是如何工作的。
android - Mortar 和 Flow 库与 ViewPager
我正在尝试在我的应用程序中调整 Mortar&Flow 并遇到一个问题,即我无法使 PageAdapter 与屏幕而不是片段一起使用。
有人设法做对了吗?
我没有成功,但是,也许有人可以从这一点上指导我:
初始匕首注册:
MainScreen,其 View 托管 ViewPager:
主视图:
现在,主要部分,子屏幕(3 个类似的屏幕,仅因我们传递给它们的参数不同 => 他们应该根据这些参数调整视图)
它的视图公共类 SubView 扩展 FrameLayout {
自定义寻呼机适配器:
问题陈述:它崩溃了,因为 SubView 类尚未添加到“Layouts.createView(childContext, screen);”的注入列表中 在适配器中的时刻,默认情况下我无法添加它,因为我想要从 SubScreen 到 SubScreen.Presenter 的数据的@provider。(我正在使用局部变量。
如果我将 SubView.class 添加到注入列表中并将本地 Screen 的变量转换为静态变量,那么我将在 ViewPager 中有 3 个相同的页面(这是合乎逻辑的,因为构造函数的每次下一次调用 - 都会覆盖旧的静态变量)。
任何帮助/想法?谢谢你的帮助,康斯坦丁
android - 使用 Flow + Mortar + Dagger2 保存/恢复屏幕状态的首选方法是什么?
我正在尝试将 Acticity + Fragments 应用程序转换为 Flow + Mortar + Dagger2
我想在从一个屏幕跳到另一个屏幕(至少向后)时保存和恢复屏幕状态。首选/推荐的方法是什么?
我花了很多时间查看流程和砂浆自述文件和示例,但无法弄清楚(文档和示例很少,只处理简单/静态/独特的数据)。
例如,您有一个类似浏览器的应用程序,它从一个页面移动到另一个页面,其中每个页面使用相同的 PageView 类、相同的 PagePresenter 类,但根据用户键入的 url 字符串具有不同的动态内容
使用 Dagger2(编译类型注释)通过注入来保存/恢复状态非常复杂/困难,对吧?(这将需要一个复杂的父/缓存结构)
我用谷歌搜索了一下,偶然发现: https ://github.com/lukaspili/flow-navigation
然而,这主要是一个实验......如果可能的话,我宁愿将我的生产赚钱应用程序建立在官方/可靠/测试/支持/由 square 支持的解决方案上
我还看了:
1) https://github.com/square/flow/issues/11 但是该示例在具有不同视图类的 2 个屏幕中使用 Dagger 注入数据(不是有效答案)
2)https://github.com/square/flow/issues/76(没有给出答案)
我也看到了这一点:我们现在在内部通过简单地向我们的屏幕对象添加一个可变字段来执行此操作:
当一个 View 被换出时,我们获取它的实例状态并将其设置在屏幕对象上(它已经在 backstack 上)。在将其推广到库之前,我们将使用这种模式一段时间。
但是流动样本和砂浆样本都没有使用这个解决方案(他们使用 dagger2 来注入列表......再次不是有效的解决方案)
那么,在砂浆+流(+ dagger2)应用程序中恢复/保存屏幕状态的最新最佳/推荐方式是什么?
android - Flow 中的子容器
是否有关于如何在流中构造子容器的文档?
例如,我有一个 Master,一个 Detail 视图。
我打算添加一个弹出视图,它有自己的后台堆栈。弹出窗口将作为一个向导,要求用户完成一些设置指令并显示为弹出窗口。
类似于下面的布局,除了还有一个主容器(完全显示的抽屉布局)
如何做到这一点?细节(或父)容器是否需要知道弹出容器的存在?像这样的东西?
这是应该做的吗?想法?
android - 如何防止 Mortar 范围在屏幕上持续存在?
我有一个使用 Mortar/Flow 和 Dagger 2 设置的应用程序。它似乎可以工作,除非我在同一类的两个视图之间切换。新视图以前一个视图的演示者结束。
例如,我有一个 ConversationScreen,它将一个 conversationId 作为构造函数参数。我第一次创建 ConversationScreen 并将其添加到 Flow 时,它会创建 ConversationView,它会向自己注入一个 Presenter,该 Presenter 是使用传递给屏幕的 conversationId 创建的。如果我随后创建一个具有不同会话 ID 的新 ConversationScreen,当 ConversationView 请求 Presenter 时,Dagger 将返回旧的 Presenter,因为范围尚未在前一个 ConversationScreen 上关闭。
有没有办法让我在设置新屏幕之前手动关闭前一个屏幕的范围?还是我刚开始就设置了范围错误?
对话视图
对话屏幕
java - Dagger Android 视图注入错误
我花了很长时间弄清楚如何设置 Dagger 依赖项来满足这个片段的本质。
我有一个控制器 WelcomeScreen(它扩展了 Path - 一个 Mortar/Flow 事物),它声明它注入了一个 ThingView。然后我注入一个 ThingView 的提供者,我的 ThingView 构造函数有一个带有 Activity 的 @Inject 注释,我在其他地方提供了它。
我最终仍然收到此错误:没有为成员/com .....view.ThingView 注册注入。您必须将其显式添加到您的模块之一中的“注入”选项中。
对我缺少什么的想法?
更新:我还尝试添加以下对错误消息没有影响的内容:
android - Android - MortarScope 如何工作?
我目前正在使用一个 Android 应用程序来制作它的新版本。该应用程序没有活动或片段。你知道,一个由对抽象充满热情的人开发的应用程序......在那里,MortarScope的概念无处不在,但真的无法弄清楚它是如何工作的,以及Mortar的目的是什么。我知道这里有文档,但非常感谢您提供清晰的解释。