http://i.stack.imgur.com/vnfQt.pngWenn ich Wert in Gemeinschafts-Preference App ändern bekam Absturz
Wie oben Aus Einstellungen angezeigt, wenn ich den Wert von temprature Einheiten von metrischen in einem britischen und Zurück-Taste drücke meine app Absturz bekam ändern und
unten Fehler zeigenhttp://i.stack.imgur.com/dBeHk.png
SettingsActivity
package com.example.poo.sunshine;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(R.id.container, new MyPreferenceFragment())
.commit();
}
public static class MyPreferenceFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Add 'general' preferences, defined in the XML file
addPreferencesFromResource(R.xml.pref_general);
// For all preferences, attach an OnPreferenceChangeListener so the UI summary can be
// updated when the preference changes.
PreferenceManager.getDefaultSharedPreferences(getActivity()).registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Preference locationPref = findPreference(getString(R.string.pref_location_key));
Preference unitsPref = findPreference(getString(R.string.pref_units_key));
prefChanged(sharedPreferences, locationPref, key);
prefChanged(sharedPreferences, unitsPref, key);
}
private void prefChanged(SharedPreferences sharedPreferences, Preference pref, String key) {
if (sharedPreferences instanceof ListPreference) {
// For list preferences, look up the correct display value in
// the preference's 'entries' list (since they have separate labels/values).
ListPreference listPreference = (ListPreference) sharedPreferences;
int prefIndex = listPreference.findIndexOfValue(key);
if (prefIndex >= 0) {
pref.setSummary(listPreference.getEntries()[prefIndex]);
} else {
pref.setSummary(sharedPreferences.getString(key, ""));
}
}
}
}
}
Ich vermute, das Problem ist, dass Ihr Fragment nicht mehr zur Aktivität hinzugefügt wird. Sie können mit der Methode 'isAdded()' überprüfen, wenn es vor der Verwendung der Einstellungen ist: https://developer.android.com/reference/android/app/Fragment.html#isAdded%28%29 – Opiatefuchs
ya sure ok lassen Sie mich überprüfen Sie –