この質問に一致する答えを探していました。最終的に、私は他のいくつかの情報源からそれを解決しました。まだ答えが欲しいかもしれない人のために、これが私のために働いたものです. (注 - このプロジェクトでは、最小 SDK とターゲット SDK の両方が 15 に設定されています。)
- PreferenceHeaders をダンプします。それらは必要ありません。
- シングルページ設定で設定画面を作成します。
- 設定アクティビティ クラスを作成します (以下の SettingsActivity)。
- PreferenceFragment (以下の LocationFragment) を拡張するインライン クラスを作成します。
- マニフェストでクラスを定義します。
- タスクを開始します - 以下のメニュー コードを参照してください。
単体設定画面を表示する設定クラス。
public class SettingsActivity extends PreferenceActivity {
private final static String TAG = "SettingsAcitivity";
public SettingsActivity() {}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyLog.d(TAG, "onCreate");
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new LocationFragment()).commit();
}
public class LocationFragment extends PreferenceFragment {
private final static String TAG = "LocationFragment";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyLog.d(TAG, "onCreate");
addPreferencesFromResource(R.xml.locationsettings);
}
}
}
設定を表示するコード:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
MyLog.d(TAG, "onOptionsItemSelected");
switch (item.getItemId()) {
case R.id.menu_main_help:
break;
case R.id.menu_main_about:
break;
case R.id.menu_main_settings:
MyLog.d(TAG, "Settings");
Intent settingsIntent = new Intent(this, SettingsActivity.class);
startActivity(settingsIntent);
break;
}
return true;
}
Back キーは、SettingsActivity を終了します。組み込みの設定ルーチンは、変更を保存します。私が持っている onResume 関数は、呼び出し元のアクティビティ (この場合は MainActivity) によって使用される変更された設定を更新する getSettings() を実行します。
それでおしまい。