要制作一个没有 PreferenceHeaders 的老式单页设置屏幕,请执行以下操作:
在调用设置屏幕的活动中(示例在 onMenuItemSelected 中):
case R.id.menuSettings:
Intent settingsIntent = new Intent(this, SettingsActivity.class);
startActivityForResult(settingsIntent, GC.SETTINGS_ACTIVITY_ID);
break;
在您的 XML 文件夹中,创建一个老式的 PreferenceScreen。PreferenceCategory、ListPreference、CheckBoxPreference 等。不要使用 PreferenceHeaders
创建一个设置活动:
package com.mycompany.project1;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
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 static class LocationFragment extends PreferenceFragment {
private String TAG = "LocationFragment";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyLog.d(TAG, "onCreate");
addPreferencesFromResource(R.xml.settings);
}
}
}
不要将对话框主题与设置活动相关联。对于某些偏好类型,例如单选按钮,您会得到奇怪的结果。(我尝试了对话框,但找不到编码错误。当我使用标准活动主题而不是对话框主题时,一切正常。显然,全息对话框主题与设置定义冲突。
注意:我使用了 startActivityforResult,因此我可以重新初始化已更改的特定设置值。