2016-05-28 11 views
0

Ich bin ein Int zu einem BroadcastReceiver, aber ich bin mir nicht sicher, ob ich es richtig mache, da es manchmal funktioniert und manchmal nicht.Bundle.getExtras Fehlfunktion

die Int Senden:

Intent intent = new Intent(getActivity(),Broadcast_RemoveClass.class); 
    Bundle bundle = new Bundle(); 
    bundle.putDouble("mInt", i); 
    intent.putExtras(bundle); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity().getApplicationContext(), 234324243, intent, 0); 
    AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000 * 5, pendingIntent); 
    Toast.makeText(getActivity(), "countdown started for: " + i,Toast.LENGTH_LONG).show(); 

Erhalten des Int:

public class Broadcast_RemoveClass extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle bundle = intent.getExtras(); 
     int i = bundle.getInt("mInt"); 
     Toast.makeText(context, "done" + i , Toast.LENGTH_LONG).show(); 
    } 
} 

Manchmal wird es den aktuellen int aber dann kommt es nur zu einem Punkt, dass es hält nur die Einstiegs- vorhergehend int. Beim Versenden der Intents wird im Toast der richtige int angezeigt, aber dann wird im BroadcastReceiver ein falscher int gefunden. Irgendwelche Ideen, was dies bewirkt?

+0

Mögliches Duplikat von [Androiden-Benachrichtigungsproblem] (http://stackoverflow.com/questions/3009059/android-pending-intent-notification-problem) –

Antwort

0

ich es statt Weitergabe von Daten über ein Bündel gelöst, ich habe nur die Daten in einem SharedPrefs Schlüssel und erhalten dann den Schlüssel in der BroadcastReceiver

senden:

prefs = getActivity().getSharedPreferences("info", Context.MODE_PRIVATE); 
prefs.edit().putInt("mInt", i).apply(); 

get es:

SharedPreferences prefs = context.getSharedPreferences("info", Context.MODE_PRIVATE); 
    int i = prefs.getInt("i",0); 

ich hoffe, das jemand hilft