Использование редактора общих настроек - PullRequest
21 голосов
/ 11 февраля 2011

Я медленно прорабатываю учебник по Android и получил следующий код для назначения пользовательских данных:

package com.androidbook.triviaquiz;

import android.app.Activity;
import android.content.SharedPreferences;

public class QuizActivity extends Activity {
    public static final String GAME_PREFERENCES = "GamePrefs";
    SharedPreferences settings = getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE);
    SharedPreferences.Editor prefEditor = settings.edit();
    prefeditor.putString("UserName", "John Doe"); //**syntax error on tokens**
    prefEditor.putInt("UserAge", 22); //**syntax error on tokens**
    prefEditor.commit();
}

Тем не менее, я получаю сообщение об ошибке (строки, отмеченные комментариями), которое подчеркивает точку и говорит «неуместная конструкция», а также подчеркивает аргументы, говорящие «удалить эти токены». Я видел, как это было сделано в других приложениях в том же формате, я не понимаю, что не так.

Ответы [ 3 ]

34 голосов
/ 11 февраля 2011

Редактировать: Конечно!Эти операторы не могут быть помещены непосредственно в класс на этом уровне и должны быть внутри метода, что-то вроде этого:

public class QuizActivity extends Activity {
    public static final String GAME_PREFERENCES = "GamePrefs";

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        SharedPreferences settings = getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE);
        SharedPreferences.Editor prefEditor = settings.edit();
        prefEditor.putString("UserName", "John Doe");
        prefEditor.putInt("UserAge", 22);
        prefEditor.putString("Gender", "Male");
        prefEditor.commit();
    }
}
3 голосов
/ 11 февраля 2011

Я думаю, что вы можете пропустить метод OnCreate (), давайте удостоверимся, что вы должны поместить общее предпочтение в ваш метод OnCreate () ... Я только что отредактировал ваш код, пройдите его

пожалуйста, пройдите код ... ниже

public class A extends Activity {
static SharedPreferences settings;
 public static final String PREFS_NAME = "YourPrefName";

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        settings = getSharedPreferences(PREFS_NAME, 0);
Log.v("UserName"," - "+settings.getString("username","android"));
SharedPreferences.Editor editor = settings.edit();          
            editor.putString("username","Change Android");          
            editor.commit();

Log.v("UserName after changed editing preference key value"," - "+settings.getString("username","android"));


}

}
0 голосов
/ 22 февраля 2013

SharedPreferences отработает метод onCreate (), если у него есть контекст:

SharedPreferences settings = getAplicationContext().getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...