问题标签 [mosby]
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.
android - 带有 MVP 片段的 Android Smack
我正在使用 smack(XMPP 库)和Mosby's MvpFagment
在列表视图(他/她的连接)中显示用户名册。
我得到了以下代码,它在不同的片段中工作,只是使用 Retrofit 库进行网络调用:
由RosterListener
using调用roster.addRosterListener(new RosterListener() { .. });
这NeighbourListItemModel
只是一个简单的 POJO 类,有一些 getter 和 setts。
但是,这会产生AbstractXMPPConnection﹕ Exception in async packet listener
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
错误,可能是因为 XMP 连接在其自己的线程中运行。
现在,如果我将代码更改为以下内容:
我得到一个java.lang.NullPointerException: Attempt to invoke virtual method 'int getLayout()' on a null object reference
错误。其中 getLayout 定义在:
视图持有者抽象类没有什么特别之处:
所以很明显这个viewHolder
变量是空的,但我不知道为什么。我的适配器定义为new BaseListAdapter(this, R.layout.neighbours_list_item, new ArrayList<ChatItemModel>(), Constants.DATA_TYPE.CHAT);
就像我说的,当我使用 Retrofit 拨打电话时,以前的代码正在运行,但我怀疑在自己的线程中运行的 XMPP 让我很头疼。
android - 我的 MVP 实现模式是否有效?
总的来说,我是 Android 和 MVP 的新手,过去 1.5 年我一直在做 iOS 编程,所以我发现委托模式很容易理解。我以视图符合演示者协议的方式实现了 MVP,这让演示者可以忽略视图的特定类型,但让它知道某些方法是给定的,因此可以调用“视图”。我一直在阅读各种 MVP 指南和所有 Mosby 教程,但我不确定我是否同意其中的一些内容。我实施的模式是洁净的吗?我想要一些反馈,这样我就不会一直朝着错误的方向前进,如果这确实是我正在做的...
例如,
基地主讲人:
然后,我将其子类化为以下内容:
PhotoRecyclerPresenter:
它与视图通信: PhotoRecyclerFragment:
这让我可以定义视图需要遵守的一组要求,以便使用单例演示者,同时让演示者不知道哪些视图使用它,只要它们符合其协议。到目前为止,在我的实践项目中,它似乎工作得很好,但我似乎找不到任何资源可以推荐我正在做的事情,就 MVP 而言,我有足够的自我怀疑,我想我会问我的第一个 StackOverflow 问题。任何有 MVP 经验的人都可以对此有所了解吗?
另外,如果我在错误的地方提问,请随时将我指向正确的地方发布此内容。
谢谢 :)
android - Android MVP - 屏幕方向 - 保留演示者状态
我对 Android 中的 MVP 模式有疑问。我想编写自己的“应用程序核心”,它将为演示者、视图等提供基类。它必须简单、干净且“稳定”。我的想法与 Mosby 所提供的非常相似,我正在努力实现这样的目标:
- 每个Activity都有自己的Presenter、View(与 Activity 通信的接口)、ViewState(保存持久数据的可打包对象)。
当Activity被销毁时:
- 分离视图
- 将 ViewState 保存在包中
- 取消 Presenter 中的所有后台任务(完成后更新视图的任务)
- 销毁演示者
重新创建Activity时:
- 附加视图
- 恢复 ViewState
- 创建 Presenter 的新实例
- 重启已取消的后台任务
除了最后一个问题- “重新启动已取消的后台任务”之外,我几乎完成了所有工作。用一个例子来讨论它会更容易。因此,假设我在演示者中有两种方法(Retrofit 2 调用):
- downloadUsers() - 从 Web 服务器和 onSuccess 更新视图中获取用户数据
- downloadProject() - 从 Web 服务器和 onSuccess 更新视图中获取项目信息
现在,当其中一个调用已启动但尚未完成时,用户正在更改配置。重新创建 Presenter 时,我如何知道应该重新启动其中的哪一个?
我想到的唯一想法是为每个任务创建一个持久的布尔标志,在任务开始时将其设置为true ,在任务完成时设置为false。创建 Presenter 时,我将检查每个标志并重新启动相应的调用。
你怎么看待这件事?如何改进?还有其他想法吗?
java - 在 Mosby 和 Dagger 2 中使用 Base Presenter 中的泛型
我正在尝试在 Dagger 2 中使用 Mosby 的 MvpBasePresenter 设置 Base Presenter 我有以下基本组件:
使用以下 BasePresenter
和以下 BaseActivity
出于某种原因,即使组件 getPresenter 返回 P,创建演示者也显示为返回类型 BasePresenter 而不是类型 P。有人有任何见解吗?这是一个好主意吗?
android - Mosby MVP - FragmentStatePagerAdapter - NPE
对于我的新应用,我想使用 Mosby 框架。目前我有一个带有两个选项卡的活动,它对我来说很好。
现在我想用 12 个选项卡实现一个新活动,当我想切换到一个新选项卡时,我得到一个 NPE
我的工作活动使用 FragmenPagerAdapter。新的 Activity 应该使用 FragmenStatePagerAdapter。在这一点上,我得到了一个 NPE。
这是我的代码
createPresenter 中的我的日志“wtf”从未被调用...这是我的 Dagger-2 组件
有谁能够帮我?我认为该框架运行良好,但我犯了一个愚蠢的错误... ;D
android - 我应该在 Mosby MvP 概念中创建 BaseActivity/Presenter 和 View 吗?
我试图理解 MvP 设计模式的概念。我的意思是,我明白了,这很容易。主要问题是优化实现。我尝试制作自己的 BaseActivity、BasePresenter 和 BaseView 只是为了从我的所有活动中提取关节的一部分,我是这样做的:
基本活动
基本演示者
基本视图
它工作得很好,但我觉得这设计得不好,所以我想改用 Mosby。问题是所有教程都没有涉及基类的方面,它们只是使用 Mosby 的作为基础(我想这很糟糕?因为我必须复制我的代码(例如 Butterknife.bind())。所以可以你们给我一些设计良好的 Mosby MVP 快速入门课程,或者给我一些提示,我应该如何划分我的项目?谢谢!
android - 如何测试使用 Retrofit 和 Dagger2 的 REST API
我想创建一个单元测试来验证 API 是否成功获取了 Repos 列表。我希望测试实际上建立网络连接而不是使用模拟服务器。而且,例如使用 RoboElectric 会很好,这样测试就可以在 JVM 上运行。
这是为了从 MVP 架构测试模型。
我正在使用 Mosby 的示例项目,它使用 Dagger 2 和 Retrofit 1.9。
这是模块:
android - 如何构建和使用 Mosby 库?
我尝试将Mosby 库添加到我的宠物项目中,但我不明白如何将其包含到项目中?我尝试通过添加为模块-> 添加为 Gradle 项目来添加 mosby,但它无法编译。
请给我链接一些教程,如何将项目(源代码)添加到我的项目中以及如何使用它(我的意思是从我的代码中访问库类)?
谢谢!
PS Project 存储在 K:\PetProject。莫斯比位于:K:\mosby。
settings.gradle(我的项目):
构建.gradle:
myproject\app 中的 build.gradle:
}
android - 在Android中使用Conductor框架时如何保留Mosby的Presenter?
可能答案是“你不能”,因为在 Mosby 2.0 中你需要使用 fragment 并将其设置为 setRetainInstance(true) 以保留 Presenter。Conductor 的目的是消除使用 Fragments 的需要,因此无法在应用程序的任何地方使用 setRetainInstance(true)。
但也许还有另一种方式..
android - MVP:如何从 Presenter 写入日志
我使用Mosby构建具有 MVP 模式的应用程序。这是规则之一:
不要在 Presenter 中使用 android 库代码。
但是,如果我想从 Presenter 记录一些东西怎么办?我看到的唯一方法是使用System.out.println();
,但听起来不太好。任何想法?