问题标签 [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.

0 投票
2 回答
463 浏览

android - 带有 MVP 片段的 Android Smack

我正在使用 smack(XMPP 库)和Mosby's MvpFagment在列表视图(他/她的连接)中显示用户名册。

我得到了以下代码,它在不同的片段中工作,只是使用 Retrofit 库进行网络调用:

RosterListenerusing调用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 让我很头疼。

0 投票
1 回答
844 浏览

android - 我的 MVP 实现模式是否有效?

总的来说,我是 Android 和 MVP 的新手,过去 1.5 年我一直在做 iOS 编程,所以我发现委托模式很容易理解。我以视图符合演示者协议的方式实现了 MVP,这让演示者可以忽略视图的特定类型,但让它知道某些方法是给定的,因此可以调用“视图”。我一直在阅读各种 MVP 指南和所有 Mosby 教程,但我不确定我是否同意其中的一些内容。我实施的模式是洁净的吗?我想要一些反馈,这样我就不会一直朝着错误的方向前进,如果这确实是我正在做的...

例如,

基地主讲人:

然后,我将其子类化为以下内容:

PhotoRecyclerPresenter:

它与视图通信: PhotoRecyclerFragment:

这让我可以定义视图需要遵守的一组要求,以便使用单例演示者,同时让演示者不知道哪些视图使用它,只要它们符合其协议。到目前为止,在我的实践项目中,它似乎工作得很好,但我似乎找不到任何资源可以推荐我正在做的事情,就 MVP 而言,我有足够的自我怀疑,我想我会问我的第一个 StackOverflow 问题。任何有 MVP 经验的人都可以对此有所了解吗?

另外,如果我在错误的地方提问,请随时将我指向正确的地方发布此内容。

谢谢 :)

0 投票
2 回答
3033 浏览

android - Android MVP - 屏幕方向 - 保留演示者状态

我对 Android 中的 MVP 模式有疑问。我想编写自己的“应用程序核心”,它将为演示者、视图等提供基类。它必须简单、干净且“稳定”。我的想法与 Mosby 所提供的非常相似,我正在努力实现这样的目标:

  1. 每个Activity都有自己的PresenterView(与 Activity 通信的接口)、ViewState(保存持久数据的可打包对象)。
  2. Activity销毁时:

    • 分离视图
    • 将 ViewState 保存在包中
    • 取消 Presenter 中的所有后台任务(完成后更新视图的任务)
    • 销毁演示者
  3. 重新创建Activity时:

    • 附加视图
    • 恢复 ViewState
    • 创建 Presenter 的新实例
    • 重启已取消的后台任务

除了最后一个问题- “重新启动已取消的后台任务”之外,我几乎完成了所有工作。用一个例子来讨论它会更容易。因此,假设我在演示者中有两种方法(Retrofit 2 调用):

  • downloadUsers() - 从 Web 服务器和 onSuccess 更新视图中获取用户数据
  • downloadProject() - 从 Web 服务器和 onSuccess 更新视图中获取项目信息

现在,当其中一个调用已启动但尚未完成时,用户正在更改配置。重新创建 Presenter 时,我如何知道应该重新启动其中的哪一个?

我想到的唯一想法是为每个任务创建一个持久的布尔标志,在任务开始时将其设置为true ,在任务完成时设置为false。创建 Presenter 时,我将检查每个标志并重新启动相应的调用。

你怎么看待这件事?如何改进?还有其他想法吗?

0 投票
1 回答
929 浏览

java - 在 Mosby 和 Dagger 2 中使用 Base Presenter 中的泛型

我正在尝试在 Dagger 2 中使用 Mosby 的 MvpBasePresenter 设置 Base Presenter 我有以下基本组件:

使用以下 BasePresenter

和以下 BaseActivity

出于某种原因,即使组件 getPresenter 返回 P,创建演示者也显示为返回类型 BasePresenter 而不是类型 P。有人有任何见解吗?这是一个好主意吗?

0 投票
1 回答
832 浏览

android - Mosby MVP - FragmentStatePagerAdapter - NPE

对于我的新应用,我想使用 Mosby 框架。目前我有一个带有两个选项卡的活动,它对我来说很好。

现在我想用 12 个选项卡实现一个新活动,当我想切换到一个新选项卡时,我得到一个 NPE

我的工作活动使用 FragmenPagerAdapter。新的 Activity 应该使用 FragmenStatePagerAdapter。在这一点上,我得到了一个 NPE。

这是我的代码

createPresenter 中的我的日志“wtf”从未被调用...这是我的 Dagger-2 组件

有谁能够帮我?我认为该框架运行良好,但我犯了一个愚蠢的错误... ;D

0 投票
2 回答
1557 浏览

android - 我应该在 Mosby MvP 概念中创建 BaseActivity/Presenter 和 View 吗?

我试图理解 MvP 设计模式的概念。我的意思是,我明白了,这很容易。主要问题是优化实现。我尝试制作自己的 BaseActivity、BasePresenter 和 BaseView 只是为了从我的所有活动中提取关节的一部分,我是这样做的:

基本活动

基本演示者

基本视图

它工作得很好,但我觉得这设计得不好,所以我想改用 Mosby。问题是所有教程都没有涉及基类的方面,它们只是使用 Mosby 的作为基础(我想这很糟糕?因为我必须复制我的代码(例如 Butterknife.bind())。所以可以你们给我一些设计良好的 Mosby MVP 快速入门课程,或者给我一些提示,我应该如何划分我的项目?谢谢!

0 投票
2 回答
4966 浏览

android - 如何测试使用 Retrofit 和 Dagger2 的 REST API

我想创建一个单元测试来验证 API 是否成功获取了 Repos 列表。我希望测试实际上建立网络连接而不是使用模拟服务器。而且,例如使用 RoboElectric 会很好,这样测试就可以在 JVM 上运行。

这是为了从 MVP 架构测试模型。

我正在使用 Mosby 的示例项目,它使用 Dagger 2 和 Retrofit 1.9。

这是模块:

0 投票
1 回答
2395 浏览

android - 如何构建和使用 Mosby 库?

我尝试将Mosby 库添加到我的宠物项目中,但我不明白如何将其包含到项目中?我尝试通过添加为模块-> 添加为 Gradle 项目来添加 mosby,但它无法编译。

请给我链接一些教程,如何将项目(源代码)添加到我的项目中以及如何使用它(我的意思是从我的代码中访问库类)?

谢谢!

PS Project 存储在 K:\PetProject。莫斯比位于:K:\mosby。

settings.gradle(我的项目):

构建.gradle:

myproject\app 中的 build.gradle:

}

这是项目结构

0 投票
2 回答
1247 浏览

android - 在Android中使用Conductor框架时如何保留Mosby的Presenter?

可能答案是“你不能”,因为在 Mosby 2.0 中你需要使用 fragment 并将其设置为 setRetainInstance(true) 以保留 Presenter。Conductor 的目的是消除使用 Fragments 的需要,因此无法在应用程序的任何地方使用 setRetainInstance(true)。

但也许还有另一种方式..

0 投票
1 回答
839 浏览

android - MVP:如何从 Presenter 写入日志

我使用Mosby构建具有 MVP 模式的应用程序。这是规则之一:

不要在 Presenter 中使用 android 库代码。

但是,如果我想从 Presenter 记录一些东西怎么办?我看到的唯一方法是使用System.out.println();,但听起来不太好。任何想法?