わかりました私はアンドロイドの本をフォローしています.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 を拡張しているためか、これがこのことを行う方法ではないかどうかはわかりません。誰かが私を助けてくれますこれを理解します?