1

わかりました私はアンドロイドの本をフォローしています.PreferenceActivityを拡張するクラスを使用して数独ゲームに設定を追加しています.このクラスはインテントによって呼び出され、addPreferencesFromResource(R.xml.settings)だけです.もう機能しません。本からのコードは次のとおりです。

package org.example.sudoku;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class Prefs extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.settings);
    }

}

今、私はこの問題を調べたところ、これを行うには PreferenceManager をインスタンス化する必要があることがわかりましたが、例では、PreferenceFragment (本のように PreferenceActivity ではない) から Prefs クラスを拡張していることがわかりました。次のようにコードします。

/*
 * this is for use from API version 11 and after...
 * 
 */ 
package org.example.sudoku;

import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;

public class Prefs extends PreferenceFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Make sure default values are applied.  In a real app, you would
        // want this in a shared function that is used to retrieve the
        // SharedPreferences wherever they are needed.
        PreferenceManager.setDefaultValues(getActivity(),
                R.xml.settings, false);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.settings);
    }

}

しかし、これは仕事をしません。インテントからこのクラスを呼び出しており、このクラスが PreferenceActivy の代わりに PreferenceFragment を拡張しているためか、これがこのことを行う方法ではないかどうかはわかりません。誰かが私を助けてくれますこれを理解します?

4

1 に答える 1

2
final String PREF_SETTINGS_FILE_NAME = "PrefSettingsFile";

設定変数の値 を読み取る。

SharedPreferences preferences = getSharedPreferences(PREF_SETTINGS_FILE_NAME, MODE_PRIVATE);
            prefSettingsValue1=  preferences.getInt("value1", 1); // default value of prefSettingsValue1 will be 1 in case you are trying to read a non-existent value. You can specify it according to your wish. (like I have done for the next value)
            prefSettingsValue2=  preferences.getInt("value2", 0); 
            prefSettingsValue3=  preferences.getInt("value3", 1); 

設定変数に値を書き込む。

 SharedPreferences preferences = getSharedPreferences(PREF_SETTINGS_FILE_NAME, MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putInt("vaule1", prefSettingsValue1);
        editor.putInt("value2",prefSettingsValue2);
        editor.putInt("value3",prefSettingsValue3);
        editor.commit();

注 :プリファレンスを保存するために XML ファイルを使用する必要はありません。設定変数に値を保存し、後でアプリケーションで読み取るだけです。整数だけでなく、関数を使用して文字列を読み書きすることもできgetます。また、Preference Activity/Fragment を拡張する必要はありません。putgetStringputString

于 2012-08-13T16:29:24.547 に答える