2017-02-06 2 views
0

Ich habe einen Rundfunkempfänger verwendet alle 24 Stunden, um den Wert einer Variablen in meinem Fragmente zu ändern.Gemeinsame Präferenzen Wert nicht aktualisiert das zweite Mal android

Da der Wert der Variablen beim Neustart des Fragments auf die vorherige Initialisierung reinitialisiert wird, habe ich gemeinsame Einstellungen verwendet, um den Wert jedes Mal zu speichern, damit er nicht immer wieder neu initialisiert wird.

Das Problem ist, dass der Wert einmal geändert wird, und die Aktualisierung wird nicht wieder. so dass, wenn der Wert 10 ist es ändert sich auf 11, aber dann nicht geht 12.

Dies ist der Rundfunkempfänger

public class AlarmReciever extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 

    String intentImageName = intent.getStringExtra("imageName"); 
    int numberImageName = Integer.parseInt(intentImageName) +1; 
    EventBus.getDefault().post(new ImageNameEvent(""+numberImageName));; 

} 

Dies ist die EventBus Funktion in dem Fragment verwendet, um den Wert aus dem BroadcastReceiver zu erhalten

Dies ist die onCreate-Funktion des Fragments, in der der Wert der gemeinsamen Voreinstellungen abgerufen wird.

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    scheduleAlarm(); 

    preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
    int name = preferences.getInt("image", 0); 
    if (name != 0) { 
     imagename = name; 
    } 
} 

Jede Hilfe wäre willkommen.

+0

Haben Sie darüber nachgedacht eine SharedPreferenceChangeListener dafür verwenden? –

Antwort

0

Anstelle von editor.apply() benutze editor.commit() Nicht wirklich sicher über den Grund, aber es hat für mich funktioniert.

1

Mit editor.apply() Sie asynchron zu tun, und nicht nichts zurück. editor.commit() ist stattdessen synchron und gibt true zurück, wenn das Speichern funktioniert, andernfalls false.

Docs here

So können Sie versuchen, apply() mit commit() und sehen zu ändern, wenn es wahr oder falsch zurückgibt.

Verwandte Themen