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();
}
ただし、ピリオドに下線を引き、「誤った構成」と言うエラー(コメントで示された行)が表示され、「これらのトークンを削除する」という引数に下線が引かれます。私はこれを他のアプリケーションで同じ形式で実行したのを見てきましたが、何が問題なのか理解できません。
編集:もちろんです!これらのステートメントは、そのレベルのクラスに直接置くことはできず、次のようなメソッド内にある必要があります。
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();
}
}
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"));
}
}
SharedPreferencesは、コンテキストがある限り、onCreate()メソッドの外側で機能します。
SharedPreferences settings = getAplicationContext().getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE);