gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:56:10 27 4
gpt4 key购买 nike

为了将 Android SDK 与我的演示者类完全分离,我试图找出避免访问我们通常使用 R 的资源 ID 的最佳方法。我以为我可以创建一个接口(interface)来访问字符串资源之类的东西,但我仍然需要 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。这很酷,因为我可以在用其他东西进行单元测试时将其换掉,但我不想管理另一个到字符串值的映射。

如果我放弃并只使用 R.string 值,我的演示者将再次绑定(bind)到我的 View 。这不理想吗?人们是否有更简单的解决方案来解决这个问题,以使他们远离演示者。我不想以 Android 提供的方式之外的方式管理字符串,因为我仍然想将它们放入布局文件并获得国际化等好处。我想做一个可以与这个演示者一起工作的愚蠢单元测试无需让 Android SDK 生成 R.java 文件。这要求太多了吗?

最佳答案

我认为没有理由在 Presenter 中调用任何 android 代码(但您始终可以这样做)。

所以在你的情况下:

View / activity onCreate() calls -> presenter.onCreate();

Presenter onCreate() calls -> view.setTextLabel() or whatever you want in the view.

始终将 Android SDK 与演示者分离。

在 Github 中,您可以找到一些关于 MVP 的示例:

关于Android MVP - 应该避免在演示者中使用 R.string 引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25794106/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com