【发布时间】:2012-08-13 14:52:42
【问题描述】:
好的,我正在关注一本 Android 书籍,他们正在使用扩展 PreferenceActivity 的类向数独游戏添加设置,该类由意图调用,它所做的只是 addPreferencesFromResource(R.xml.settings),这种方法已被弃用且不再工作,这是书中的代码:
package org.example.sudoku;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class Prefs extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.settings);
}
}
现在我已经研究了这个问题,发现你必须实例化一个 PreferenceManager 才能做到这一点,但在示例中我发现它们从 PreferenceFragment 扩展了 Prefs 类(不是书中的 PreferenceActivity),我设法代码如下:
/*
* this is for use from API version 11 and after...
*
*/
package org.example.sudoku;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
public class Prefs extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Make sure default values are applied. In a real app, you would
// want this in a shared function that is used to retrieve the
// SharedPreferences wherever they are needed.
PreferenceManager.setDefaultValues(getActivity(),
R.xml.settings, false);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.settings);
}
}
但这不起作用,我不知道是不是因为我从一个意图调用这个类并且这个类扩展了 PreferenceFragment 而不是 PreferenceActivy 或者这不是做这件事的方式,有人可以帮忙吗我出来理解这个?
【问题讨论】:
-
有必要使用 PrefrenceActivity/PreferenceFragment 吗?同样的功能也可以通过使用 SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE); 来实现
-
如果你想按照我的方式做,我可以和你分享整个代码。 :)
-
太好了,是的,无论哪种方式我都会这样做,我仍在努力学习如何做这些事情,无论如何按照你的方式做有什么区别?
-
等一下。我会立即发布代码。
标签: android android-preferences