jil*_*ggs 11 android deprecated preferenceactivity android-preferences sharedpreferences
当我尝试使用Android的开发人员指南和教程使用"首选项"创建"设置活动"时,我收到警告,例如:
"不推荐使用PreferenceActivity类型的方法addPreferencesFromResource(int)"
对于代码中的这两行:
getPreferenceManager().setSharedPreferencesName(PREFS_NAME);
addPreferencesFromResource(R.xml.default_values);
Run Code Online (Sandbox Code Playgroud)
我知道这些只是警告,但是当我运行我正在设计的应用程序时,我想知道它们现在还是将来是否会引起任何问题.
public class DefaultValues extends PreferenceActivity {
static final String PREFS_NAME = "defaults";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getPrefs(this);
getPreferenceManager().setSharedPreferencesName(PREFS_NAME);
addPreferencesFromResource(R.xml.default_values);
}
static SharedPreferences getPrefs(Context context) {
PreferenceManager.setDefaultValues(context, PREFS_NAME, MODE_PRIVATE,
R.xml.default_values, false);
return context.getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
}
}
Run Code Online (Sandbox Code Playgroud)
Cri*_*tan 22
PreferenceActivity()已弃用,但PreferenceFragment()现在也是如此.PreferenceFragmentCompat()现在是要走的路:
添加依赖项
implementation "androidx.preference:preference:1.0.0-alpha3"
Run Code Online (Sandbox Code Playgroud)
或者,如果您仍在使用支持库:
implementation "com.android.support:preference-v7:27.1.1"
Run Code Online (Sandbox Code Playgroud)
扩展PreferenceFragmentCompat
class MyPreferenceFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.app_preferences)
}
}
Run Code Online (Sandbox Code Playgroud)
展示你的碎片
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
supportFragmentManager.beginTransaction().replace(android.R.id.content, MyPreferenceFragment()).commit()
}
Run Code Online (Sandbox Code Playgroud)
指定preferenceTheme
在AppTheme中,添加以下任一首选项主题,具体取决于您认为哪一个更好:
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
Run Code Online (Sandbox Code Playgroud)
由于该方法已弃用,建议您不要在代码中使用它,因为完全有可能在未来的Android版本中将其删除.但是,我还没有遇到一个已被弃用的方法,该方法实际上已从Android中删除.
方法的描述中没有提供替代方法,因为首选方法(从API级别11开始)是实例化PreferenceFragment对象以从资源文件加载首选项.请在此处查看示例代码:PreferenceActivity
| 归档时间: |
|
| 查看次数: |
21114 次 |
| 最近记录: |