加载字符串中的strings.xml文件
我使用下面的代码在我的应用程序:加载字符串中的strings.xml文件
string_array = getResources().getStringArray(R.array.array_of_strings);
my_text_view.setText(string_array[i]);
的问题是,我开始包含该代码多次活动。 所以,我觉得这段代码是低效率的,因为每次我开始活动时,我都必须加载整个数组来只使用一个元素,因为字符串数组非常大。
有没有办法直接加载想要的元素?
感谢很多提前:)
更新: 我尝试使用Application对象为Talihawk如下所述,但我会在下面一行的错误:
MyApplication my_obj = (MyApplication) getApplication();
string_array = my_obj.getStringArray();
的错误是:
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
只要应用程序处于活动状态,您就可以使用Application对象来保存字符串数组。
**编辑**
首先,你必须在你的AndroidManifest.xml中定义您的自定义应用程序类:
<application
android:name="MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name"
>
**编辑**
public class MyApplication extends Application {
private String[] string_array;
@Override
public void onCreate() {
super.onCreate();
string_array = getResources().getStringArray(R.array.array_of_strings);
}
public String[] getStringArray() {
return string_array;
}
}
而在你的活动只是:
string_array = ((MyApplication) getApplication()).getStringArray();
my_text_view.setText(string_array[i]);
这样你的字符串数组将只为您的应用程序的持续时间一旦加载(如果您的应用程序被杀死你无论如何都要重新加载它)
您可以在以下link
非常感谢:)但遇到以下行时出现错误:MyApplication my_obj =(MyApplication)getApplication(); line string_array = my_obj.getStringArray(); android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)非常感谢...我真的很感谢你的帮助:) – Elshaer 2012-03-03 09:14:20
@Elshaer你可以发布stacktrace你的恐惧? – Talihawk 2012-03-09 19:56:21
@Elshaer我想我知道你为什么会遇到错误,并用解决方案的另一个缺失部分编辑我的答案。希望这有效:) – Talihawk 2012-03-09 20:01:43
你可以用静态方法创建一个辅助对象来加载/返回字符串数组,因此它只会被加载一次。如果你想获得真正的幻想,你可以声明它是一个软或弱引用,所以它不会占用内存,但那是你的呼叫......取决于数组和应用程序的大小。
public class StringHelper {
private static String[] stgArray;
public static String[] getMyStringArray(Context ctx) {
if (stgArray == null) {
stgArray = ctx.getResources().getStringArray(R.array.array_of_strings);
}
return stgArray;
}
什么更多信息问题? – 2012-03-02 18:43:05
每当我开始这个活动(我开始它很多),我加载一个大的字符串数组,然后使用一个元素。 有没有办法直接加载想要的元素? – Elshaer 2012-03-02 18:46:37