22

私はゆっくりと 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();
}

ただし、ピリオドに下線が引かれ、「配置されていない構造」と表示され、「これらのトークンを削除してください」という引数に下線が引かれるエラー (コメントで示される行) が表示されます。同じ形式の他のアプリケーションでこれが行われているのを見たことがありますが、何が問題なのかわかりません。

4

3 に答える 3

36

編集:もちろん!これらのステートメントは、そのレベルのクラスに直接配置することはできず、次のようにメソッド内に配置する必要があります。

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();
    }
}
于 2011-02-11T09:33:01.687 に答える
4

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"));


}

}
于 2011-02-11T09:50:49.820 に答える
0

SharedPreferences は、コンテキストがある限り、 onCreate() メソッドの側で機能します。

SharedPreferences settings = getAplicationContext().getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE);
于 2013-02-22T18:47:55.657 に答える