我正在寻找与这个问题相匹配的答案。最终,我从其他几个来源解决了这个问题。对于那些可能仍然希望回答的人,这对我有用。(注意 - 在这个项目中,最小和目标 SDK 都设置为 15。)
- 转储 PreferenceHeaders,您将不需要它们。
- 使用单页设置创建首选项屏幕。
- 创建一个偏好活动类(SettingsActivity 下面)。
- 创建一个扩展 PreferenceFragment 的内联类(下面的 LocationFragment)。
- 在 Manifest 中定义类。
- 开始任务 - 请参阅下面的菜单代码。
显示单个设置屏幕的首选项类。
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 函数执行 getSettings() 更新调用活动(在本例中为 MainActivity)使用的任何更改设置。
而已。