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

環境設定は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 に答える
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

環境設定を保存および取得する方法を示すサンプル コードを次に示します。ここでは、ユーザー名とパスワードを 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 に答える