2016-04-28 8 views
0

Lange Zeit lurker - erstmals Plakat! Ich hoffe, dass jemand mit meinem kleinen Problem helfen kann;Probleme mit sendBroadcast (String Action) in PreferenceFragment

Ich habe eine PreferenceFragment, die eine OnSharedPreferenceChangeListener implementiert, die dann eine sendBroadcast(), um meine AlarmReceiver, um eine sich wiederholende Alarmdienst einzurichten abfeuern sollte. Ich kann sehen, dass der Hörer registriert das Ereignis onChange und geht bis auf die getActivity(). SendBroadcast() - aber leider die Übertragung wird nie von meinem AlarmReceiver abgefangen.

Hier ist meine PreferencesFragment;

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
    Preference preference = findPreference(key); 
    if (preference instanceof CheckBoxPreference) { 
     //Intent alarmReceiverIntent = new Intent(getActivity(), AlarmReceiver.class); 
     Intent alarmReceiverIntent = new Intent(getString(R.string.ACTION_SET_NOTIFICATIONS)); 
     //alarmReceiverIntent.setAction(getActivity().getString(R.string.ACTION_SET_NOTIFICATIONS)); 
     getActivity().getApplicationContext().sendBroadcast(alarmReceiverIntent); 
    } 

AlarmReceiver:

public class AlarmReceiver extends BroadcastReceiver {   
@Override 
public void onReceive(Context context, Intent intent) { 
    //This is just to see if the AlarmReceiver has caught the broadcast. 
    Log.v(TAG, "We are in the receiver - yay"); 

schließlich die AndroidManifest.xml

<receiver 
    android:name=".AlarmReceiver" 
    android:enabled="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
    <intent-filter> 
     <action android:name="dk.aau.student.b211.sleepattention.SET_NOTIFICATIONS" /> 
    </intent-filter> 
</receiver> 

Ich hoffe, dass es jemand da draußen, die :)

+0

Überprüfen Sie Ihre 'ACTION_SET_NOTIFICATIONS' –

Antwort

0

Ok helfen kann - so fand ich ein Lösung! Wenn Sie Probleme beim Empfang Ihrer Broadcasts haben, müssen Sie den BroadCastReceiver als Empfänger registrieren. Das hat mein Problem gelöst :) Denken Sie daran, sich bei onPause abzumelden und in onResume zu registrieren.

z.

@Override 
public void onResume() { 
    super.onResume(); 
    sharedPreferences.registerOnSharedPreferenceChangeListener(this); 
    getActivity().registerReceiver(alarmReceiver, new IntentFilter(getString(R.string.ACTION_SET_NOTIFICATIONS))); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    sharedPreferences.unregisterOnSharedPreferenceChangeListener(this); 
    getActivity().unregisterReceiver(alarmReceiver); 
}