Android:在没有活动或上下文引用的情况下访问资源

时间:2011-09-23 16:15:55

标签: android resources

我发布这个问题,希望能得到某种明确的答案。

没有活动或上下文引用是否真的无法访问资源。当需要的只是访问某些值或资产或与UI无关的字符串时,传递这些引用会使代码过于复杂。

加上所有那些潜在的悬挂参考文献。

此外,这完全破坏了各种设计模式,例如单身,在获取实例时必须提供参数。

提出静态参考

所以有一种方式或整个社区都有这个问题。

2 个答案:

答案 0 :(得分:9)

您的资源捆绑在一个上下文中,这是事实,您无法改变它。

以下是您可以做的事情:

扩展Application,获取应用程序上下文并将其用作静态帮助程序。

public class App extends Application {

    private static Context mContext;

    public static Resources getResources() {
        return mContext.getResources();
    }

    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();
    }
}

你的清单:

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:name="your.package.path.to.App">

答案 1 :(得分:0)

让您的Application班级成为单身人士并使用它。这是Context。所有资源都与您的应用相关联,因此您需要Context参考。如果您不想动态加载字符串等,可以在单例类中预加载字符串等。