不推荐使用的方法:getPreferenceScreen

时间:2014-03-26 20:56:22

标签: android nullpointerexception sharedpreferences preferences preferenceactivity

我希望以编程方式启用/禁用checkboxPreference,具体取决于ListPreference中的值。不推荐使用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 ....

它在此行中使用NullPointerExeption崩溃

thx tom

编辑: 我正在使用Fragments,我有一个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);
}

}

1 个答案:

答案 0 :(得分:2)

该方法已被弃用,因为您应该使用PreferenceFragment,但是11以下的API仍然需要使用旧方法,因为没有SupportPreferenceFragment可以使用。不推荐使用的方法不会影响您的应用,除非该方法已从SDK中完全删除。

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