Android ==> Предпочтения? - PullRequest
       75

Android ==> Предпочтения?

0 голосов
/ 19 июня 2010

мое приложение падает с исключением из-за нулевого указателя в приведенном ниже коде. у меня есть файл настроек xml в res / xml / defaults.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 ]

2 голосов
/ 19 июня 2010

Файлы настроек не сохранены в /res/xml/defaults.xml

проекта

Они хранятся на устройстве в папке вашего приложения, что-то вроде

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

Попробуйте не указывать имя файла, так как у вас будут некоторые проблемы с файлами настроек, например, у этого OP здесь

SharedPreferences preferences = PreferenceManager
                    .getDefaultSharedPreferences(context);

Тогда вам, вероятно, придется запросить

preferences.getString('weightPref', null);
0 голосов
/ 19 августа 2010

Ваши предпочтения должны быть расширены PreferenceActivity .Затем вам нужно создать XML-файл ресурса для предпочтений и сослаться на него в своей PreferenceActivity, например, так:

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

В настройках xml должен быть PreferenceScreen в качестве элемента верхнего уровня, и вы можете воспользоваться всемиAndroid предоставляет вам различные виды предпочтений для настройки предпочтений.Это был бы самый распространенный и элегантный способ сделать это.

0 голосов
/ 19 июня 2010

Установка значения в общих настройках:

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".

0 голосов
/ 19 июня 2010

Вот пример кода, который показывает, как сохранить и получить настройки. Здесь я сохраняю имя пользователя и пароль в 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);

Надеюсь, это поможет ..

...