我有一个静态键/值对列表,我需要将其包含在我的项目中,如下所示:
givenName : First Name
sn : Last Name
mail : Email
... snip ...
我会把它放在 Android 项目的哪个位置?
谢谢埃里克
我有一个静态键/值对列表,我需要将其包含在我的项目中,如下所示:
givenName : First Name
sn : Last Name
mail : Email
... snip ...
我会把它放在 Android 项目的哪个位置?
谢谢埃里克
Android 提供了一个预构建的内容提供程序包装器SharedPreferences
,该包装器专门用于在键值对中存储原语。
SharedPreferences mySharedPrefs = PreferenceManager
.getDefaultSharedPreferences(getApplication());
mySharedPrefs.edit().putString(key, value).commit();
WheregetApplication()
仅用作获取应用程序上下文的方法。取回值
SharedPreferences mySharedPrefs = PreferenceManager
.getDefaultSharedPreferences(context);
String value = mySharedPrefs.getString(key, null);
这将返回存储的带有 key 的 String ,如果没有存储任何内容key
,则返回。null
您需要保存在以下位置的 XML 文件res/values/strings.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="givenName">First Name</string>
<string name="sn">Last Name</string>
<string name="mail">Email</string>
</resources>
以下是如何访问其他 xml 中的值:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/givenName" />
或者这是您可以从 Java 代码访问值的方式:
String string = getString(R.string.givenName);
Log.d("Test", string); // Outputs "First Name" to LogCat console.
查看此 Android 开发指南以获取有关字符串资源的完整参考。
如果您真的必须使用静态/全局变量,请将它们放入您扩展 Application 的自定义类中。像这样:
public classYourApplication extends Application {
protected Bar myBar;
public Bar getBar() { return myBar; }
public void setBar(Bar bar) { myBar = bar; }
...
}
声明您将通过清单使用自定义应用程序类。
<application
android:icon="@drawable/ic_launcher_noteit1"
android:label="@string/app_name"
android:theme="@style/App_Theme"
android:name="YourApplication"
android:debuggable="true">
现在您可以使用 (YourApplication) getApplication() 从任何活动中访问您的应用程序对象。请注意,这不是推荐的方法。推荐的方法是使用单例模式。(答案取自我的问题答案之一)