如何在不违反基本 OOD 原则的情况下使用 Android 的 getString()?

发布于 2024-11-29 05:20:01 字数 501 浏览 1 评论 0 原文

我需要使用 getString()我的应用程序中的大部分模块。

但由于某种奇怪的原因,它与应用程序或上下文相关< /a>,这意味着我需要将应用程序引用作为参数传递给应用程序中的每个类。

这显然违反了面向对象设计的最基本原则之一。

有办法解决这个问题吗?

I need to use getString() from most of the modules in my application.

But for some strange reason, it is tied to Application or Context, so that means I need to pass to each and every class in my application, the Application reference as a parameter.

This clearly violates one of the most basic principles of object oriented design.

Is there a way around this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谁许谁一生繁华 2024-12-06 05:20:01

“奇怪的原因”是,由于字符串资源与您的应用程序绑定在一起,因此如果没有某种句柄(上下文),就无法访​​问它们。如果大多数不是活动的类需要访问字符串资源,您可能需要重新考虑一下您的设计。不依赖 Context 的一个简单方法是加载字符串并将它们传递给构造函数中的类。

The 'strange reason' is that since the string resources are tied to your application, there is no way to access them without some sort of handle to it (the Context). If most of your classes that are not activities need to access string resources, you might want to rethink your design a bit. A simple way to not depend on a Context is to load the strings and pass them to your classes in the constructor.

云朵有点甜 2024-12-06 05:20:01

是的,有一个解决方法 - 如果您碰巧(或可以)将 View(任何 View 派生类)传递给构造函数,并将其分配给数据成员,那么您可以从类中的任何位置访问字符串资源:

String str_via_res = yourView.getContext().getString(R.string.str_via_res);

否则,您必须将 Context 传递给需要访问这些字符串资源的每个类。

Yes, there is a workaround - if you happen to (or can) pass a View (any View-derived class) to the constructor, and you assign it to a data member, then you can access the string resources from anywhere in your class:

String str_via_res = yourView.getContext().getString(R.string.str_via_res);

Otherwise, you will have to pass a Context to every class that needs access to these string resources.

萤火眠眠 2024-12-06 05:20:01

您可以扩展 android.app.Application 类来创建一个静态方法,以在应用程序中的所有类之间传递上下文。

请参阅: PhoneApp.java

you can extend android.app.Application class to create a static method to pass on the context across all classes in your application.

Refer : PhoneApp.java

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文