Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用安卓&x27;s getString()而不违反基本的OOD原则?_Android_Android Context - Fatal编程技术网

Android 如何使用安卓&x27;s getString()而不违反基本的OOD原则?

Android 如何使用安卓&x27;s getString()而不违反基本的OOD原则?,android,android-context,Android,Android Context,我需要使用我的应用程序中的大多数模块 但出于某种奇怪的原因,它是,这意味着我需要将应用程序引用作为参数传递给应用程序中的每个类 这显然是面向对象设计的最基本原则之一 有办法解决这个问题吗?奇怪的原因是,由于字符串资源绑定到应用程序,因此如果没有某种句柄(上下文),就无法访问它们。如果您的大多数非活动类需要访问字符串资源,您可能需要重新考虑一下您的设计。不依赖上下文的一种简单方法是加载字符串并将其传递给构造函数中的类 您可以扩展android.app.Application类来创建一个静态方法,以

我需要使用我的应用程序中的大多数模块


但出于某种奇怪的原因,它是,这意味着我需要将应用程序引用作为参数传递给应用程序中的每个类

这显然是面向对象设计的最基本原则之一


有办法解决这个问题吗?

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

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


请参阅:

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

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

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

“我需要将应用程序对象作为参数传递给应用程序中的每个类。”-您将不会传递“对象”,而是传递对象的“引用”。虽然如果您没有以正确的方式处理它,这可能会产生一些有害的影响,但我不理解将引用传递给对象的概念“显然违反了面向对象设计的最基本原则之一”。如果我们不将对对象的引用作为其他对象方法的参数传递给其他对象,那么OOP就不存在了。哦,请引用一个引用来解释为什么您认为它违反了面向对象设计(OOD,它实际上与OOP不同)的最基本原则之一。谢谢!你的建议实际上对我很有用,因为我所有的课程都有一些观点+1FYI:使用此方法仍然会泄漏内存。视图“引用整个活动,从而引用您的活动所包含的任何内容”。