Android 不推荐使用的方法:getPreferenceScreen

Android 不推荐使用的方法:getPreferenceScreen,android,nullpointerexception,sharedpreferences,preferences,preferenceactivity,Android,Nullpointerexception,Sharedpreferences,Preferences,Preferenceactivity,我想根据ListPreference中的值,以程序方式启用/禁用checkboxPreference。getPreferenceScreen方法已被弃用: @Override public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { if ( key.equals(PREF_KEY_VORL) ) { Log.v("PreferenceChange", "Vorlage: " + prefs

我想根据ListPreference中的值,以程序方式启用/禁用checkboxPreference。getPreferenceScreen方法已被弃用:

@Override
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
if ( key.equals(PREF_KEY_VORL) ) {

    Log.v("PreferenceChange", "Vorlage: " + prefs.getString(key,"Sonstige"));

    if(prefs.getString(key,"Sonstige").equals("Sonstige"))  //Vorlage == Sonstige
    {
        getPreferenceScreen().findPreference(PREF_KEY_UTMREF).setEnabled(true);
    }
    else
    {
        getPreferenceScreen().findPreference(PREF_KEY_UTMREF).setEnabled(false);
    }
}
}
我在调用getPreferenceScren.find的行中也得到了一个错误

它与此行中的NullPointerExection一起崩溃

thx汤姆

编辑: 我使用片段,我有一个fragement类,在这里我构建了我的首选项屏幕:

public class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Load the preferences from a XML resource
    addPreferencesFromResource(R.layout.settings);
}

}

该方法已被弃用,因为您应该使用
首选项片段
,但是低于11的API仍然需要使用旧方法,因为没有
支持首选项片段
。被弃用的方法不应影响您的应用程序,除非该方法已从SDK中完全删除


您得到的是一个空异常,可能是因为它找不到您给它的密钥

我正在使用片段,那么现在该怎么办?(请参见编辑)您正在使用
PreferenceFragment
,但仍然发现该方法已被弃用?是的,但可能我做错了……如何启用/禁用这样的复选框?我非常确定您应该强制转换到所需的对象示例
CheckBoxPreference box=(CheckBoxPreference)getPreferenceScreen().FindReference(“密钥”)然后使用复选框值启用/禁用。我已经有一段时间没有使用PreferenceFragment/Activity了,我真的不记得了