当前位置: 首页 > 知识库问答 >
问题:

有没有办法重写android@string行为?

井学
2023-03-14

我解释我这篇文章的目标。

实际上,我想重写如何Android工作的基本上,与应用程序中的字符串。此时此刻,我可以从重写android资源中动态更改它

实际上,我有这个功能,只有当我使用getString(R.string.my_string)时才能正常工作:


class MyRessources(
    res: Resources?,
    private val context: Context?
) : Resources(res?.assets, res?.displayMetrics, res?.configuration) {

    /** {@inheritDoc} */
    override fun getString(id: Int): String {

        var identifier = id

        val entryName = getResourceEntryName(id)

        context?.let {

            val name = entryName.plus("__test")

            identifier = getIdentifier(name, "string", getResourcePackageName(id))

            if (identifier == 0) {
                identifier = id
            }
        }

        return super.getString(identifier)
    }
}

有一种简单的方法,不需要太多代码,就可以覆盖xml中的@string行为?

共有1个答案

方航
2023-03-14

它在Fragment中对您有效,因为您可能正在其中创建自定义myresources实例并通过它获取String

new MyResources(resources, context).getString(...)

没有覆盖@string/resname的选项,这将始终使用应用程序的原始资源

如果您想重写一些<代码>字符串 s,仅用于某些测试(例如调试),那么考虑为此目的创建分离的味道和/或阅读此主题。

 类似资料:
  • 我有一个由多个类实现的接口,这些类也有一些额外的方法。如果我自动连接这个类。有没有办法自动安装这些额外的方法? 例如─ 界面 服务1 服务2 如果我尝试像这样直接自动连接服务- 然后我得到了类似这样的错误-

  • 问题内容: 我们正在开发S60版本,该平台具有不错的Python API。 但是,关于Android上的Python尚无任何官方资料,但是由于Jython存在,有没有办法让蛇和机器人一起工作? 问题答案: 一种方法是使用: 开源Python库,用于快速开发利用创新用户界面的应用程序,例如多点触控应用程序。 可在和上运行。你可以在所有受支持的平台上运行相同的代码。

  • 问题内容: 有没有办法用TypeScript语言进行方法重载? 我想实现以下目标: 这是我不想做的一个例子(我真的很讨厌JS中重载hack的那一部分): 问题答案: 根据规范,TypeScript确实支持方法重载,但是它很笨拙,并且包含许多手动检查参数类型的工作。我认为这主要是因为在纯JavaScript中最接近方法重载的地方还包括检查,并且TypeScript尝试不修改实际的方法主体,以避免任何

  • 问题内容: 有没有办法在Go中执行重复的后台任务?我在想类似Java 的东西。我知道我可以使用goroutine和来做到这一点,但是我想要一些容易停止的东西。 这就是我得到的,但是对我来说看起来很丑。有没有更清洁/更好的方法? 问题答案: 该功能使通道发送定期消息,并提供了一种停止该消息的方法。使用它像这样(未经测试): 您可以通过关闭频道来停止工作人员:。

  • 我正在编写一个JavaFractal Explorer,分形计算是多线程完成的。以前,我只是创建了一堆线程(系统有多少处理器内核就有多少)并将它们保存在一个数组中,但这会导致一些问题,而且不是很优雅,现在我想切换到执行器。 我需要的功能是: 用户可以随时选择要放大的分形图像的新区域,因此应该可以随时取消计算,并立即重新插入新任务 我的问题是Java ExecutorService(我使用Execu

  • 问题内容: 我在代码中有很多地方可以处理Alamofire请求/响应。 由于某些间歇性问题(最常见的是不稳定的网络),每个请求都可能失败。 我希望能够在重试前重试请求3次。 直接的方法是拥有类似的东西 但是,出于多种原因,我不喜欢这种方法。最明显的是,我将需要为每种请求类型实现这样的代码(并且我有15种这样的代码)。 我很想知道是否有办法做类似的事情(变化很小且非侵入性) 问题答案: 通过Swif