如何在 PreferenceActivity 中创建 PreferenceScreen?
How to create a PreferenceScreen in a PreferenceActivity?
考虑以下 activity:
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceScreen screen =
getPreferenceManager().createPreferenceScreen(this);
}
}
Android Studio 显示调用 getPreferenceManager()
:
的警告
'getPreferenceManager()' is deprecated
This inspection reports where deprecated code is used in the specified inspection scope.
但是,它没有描述我应该采取什么纠正措施来避免警告。我找不到任何替代方法来获取对 PreferenceManager
的引用,而且我看不到其他方法来创建 PreferenceScreen
.
我的目标是以编程方式填充 PreferenceActivity
首选项及其默认值,因为这些是在运行时生成的,不能包含在 xml/preferences.xml
中。
虽然 getPreferenceManager()
在 SettingsActivity
中已弃用,但在 PreferenceFragment
中未弃用。因此,创建PreferenceScreen
的正确方法如下:
public class SettingsActivity extends PreferenceActivity {
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceScreen screen =
getPreferenceManager().createPreferenceScreen(getActivity());
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager()
.beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
}
考虑以下 activity:
public class SettingsActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PreferenceScreen screen =getPreferenceManager().createPreferenceScreen(this); } }
Android Studio 显示调用 getPreferenceManager()
:
'getPreferenceManager()' is deprecated
This inspection reports where deprecated code is used in the specified inspection scope.
但是,它没有描述我应该采取什么纠正措施来避免警告。我找不到任何替代方法来获取对 PreferenceManager
的引用,而且我看不到其他方法来创建 PreferenceScreen
.
我的目标是以编程方式填充 PreferenceActivity
首选项及其默认值,因为这些是在运行时生成的,不能包含在 xml/preferences.xml
中。
虽然 getPreferenceManager()
在 SettingsActivity
中已弃用,但在 PreferenceFragment
中未弃用。因此,创建PreferenceScreen
的正确方法如下:
public class SettingsActivity extends PreferenceActivity {
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceScreen screen =
getPreferenceManager().createPreferenceScreen(getActivity());
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager()
.beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
}