0

我的应用程序因以下代码中的空指针异常而崩溃。我在 res/xml/defaults.xml 下有一个 xml 首选项文件知道它为什么会崩溃吗?

public class Preference extends Activity {
    public Preference()
    {
    }

    public String getPreference(String key)
    {
                //it still crashes here
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());
        String result = settings.getString(key,  null);
        return result;
    }
}
4

4 回答 4

2

首选项文件存储在项目的/res/xml/defaults.xml

它们存储在设备上的应用程序文件夹中,例如

/data/data/com.your.pkg/default.prefs

尽量不要指定文件名,因为你会遇到一些首选项文件的问题,就像这个 OP 在这里

SharedPreferences preferences = PreferenceManager
                    .getDefaultSharedPreferences(context);

那么你可能需要查询

preferences.getString('weightPref', null);
于 2010-06-19T11:15:23.877 回答
0

这是一个示例代码,展示了如何保存和检索首选项。在这里,我将用户名和密码保存在 SharedPreferences 中。

SharedPreferences uPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE);
SharedPreferences.Editor editor; = uPreferences.edit(); //Instantiating editor object


protected void storeSharedPrefs(String username, String password) {
        /*
         * Storing in Shared Preferences
         */
        editor.putString("username", username);
        editor.putString("password", password);     
        editor.commit();  //Commiting changes
    }

从 SharedPreferences 检索另一个活动中的用户名和密码。

 private SharedPreferences mSP;
    mSP = getSharedPreferences("CurrentUser", MODE_PRIVATE);
            String username = mSP.getString("username", null);
            String password = mSP.getString("password", null);

希望能帮助到你..

于 2010-06-19T12:55:16.490 回答
0

在共享首选项中设置一个值:

Editor prefs = getSharedPreferences("Application_name", MODE_PRIVATE).edit();
prefs.putString("key", accountKey);
prefs.commit();

从另一个活动中获取价值:

String accountKey = 
    this.getSharedPreferences("Application_name", MODE_PRIVATE).
    getString("key", null);

如果您使用一些预定义的处理程序(例如getString(R.string._key),而不是硬编码的字符串 )来访问变量,那就太好了"key"

于 2010-06-19T13:02:41.533 回答
0

您的 Preferences 应该扩展PreferenceActivity。然后您需要为首选项创建一个资源 xml 文件,并在您的 PreferenceActivity 中引用它,如下所示:

@Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
            etc.
    }

首选项 xml 应该有一个 PreferenceScreen 作为顶级元素,您可以利用 Android 为您提供的所有不同首选项视图来设置首选项。这将是最常见、最优雅的方式。

于 2010-08-19T06:08:13.830 回答