2016-04-16 170 views
0

我已经在我的类的顶部声明以下:初始化字符串数组从字符串数组资源

private String[] mapTypes = new String[]{"Normal", "Satellite", "Satellite with streets", "Terrain"}; 

我也有以下字符串数组资源定义:

<string-array 
    name="map_types"> 
     <item>Normal</item> 
     <item>Satellite</item> 
     <item>Satellite with streets</item> 
     <item>Terrain</item> 
</string-array> 

我想从类顶部的字符串数组中初始化数组。即在声明变量时做类似如下的事情:

private String[] mapTypeNames = getResources().getStringArray(R.array.map_types); 

任何想法?

回答

0

如果“班级”是从Context继承的东西,欢迎您在班级中填写该字段,但直到适当的生命周期方法(例如,活动中的onCreate())才能初始化该字段。直到那时,getResources()才会起作用。

如果“类”不是从Context继承的,那么默认情况下,您所需的语法是不可能的。而且,即使您实施自己的方法,反过来也需要一个Context,而您又回到了原点。

+0

这就是我的想法。我只是试图避免每次执行onCreate()时初始化数组,并且同时成为一个好孩子并使用资源 –

+0

@ChrisRead:“我只是试图避免每次onCreate()都初始化数组,被执行“ - 你不会保存任何东西。 'onCreate()'只在活动被创建时执行,在实例化后不久。所以你的领域初始值设定项。 – CommonsWare