2016-06-20 9 views
0
empfangen

Ich versuche, eine Sendung von Setting Fragment zu senden und höre sie in einer anderen Aktivität an. Ich habe die Einstellungsaktivität mit startActivityForResult von ActivityA gestartet. SettingsActivity hat ein statisches Fragment SettingsFragment:Android: Broadcast wird nicht in Aktivität

public static class SettingsFragment extends PreferenceFragment { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      addPreferencesFromResource(R.xml.pref_general); 
      Preference rateApp = findPreference("rate_this_app"); 

      Preference abcd = findPreference("abcd"); 
      rateApp.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
       @Override 
       public boolean onPreferenceClick(Preference preference) { 

       } 
      }); 




     abcd.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
      @Override 
      public boolean onPreferenceClick(Preference preference) { 
       Intent intent = new Intent(getActivity(), ActivityA.class); 
       intent.setAction("abcd"); 
       getActivity().sendBroadcast(intent); 
      } 
     }); 
    } 
} 

Die Sendung von abcd.setOnPreferenceClickListener gesendet wird, in ACTIVITYA registriert, aber es ist dort nicht aus irgendeinem Grund empfangen. Liegt es daran, dass die Aktivität im Backstack ist und keine Broadcasts empfangen wird?

+0

@jankigadhiya Nein. Ich weiß, wie man Broadcast senden, aber dieses funktioniert nicht aus irgendeinem Grund. – crysis

+0

Wenn Ihre Aktivität pausiert ist, wird sie nicht empfangen. http://StackOverflow.com/Questions/7890363/broadcastreceiver-and-paused-activity –

+0

Versuchen Sie zu debuggen, überprüfen Sie, ob Activity A onDestory bereits angerufen wird oder nicht? und zeige Aktivität Ein Code zum besseren Verständnis –

Antwort

0

Wenn sich Ihre Aktivität im angehaltenen Status befindet, empfangen Sie keine Übertragung.

Similar question

Eine Alternative zu, dass abhängig von Ihrem Ziel. Wenn Sie einige Einstellungen in der App ändern möchten, würde ich sie unter SharedPreferences speichern, sobald der Benutzer Änderungen vornimmt. In ActiivityA 's onCreate Methode würde ich es von SharedPreferences lesen. BroadcastReceiver werden verwendet, um den Entwickler zu benachrichtigen, wenn eine Aktion ausgeführt werden muss. Wenn beispielsweise eine Änderung der Einstellung die Ansichten auf dem Bildschirm des Benutzers ändert, ist BroadcastReceiver nützlich. Sie werden benachrichtigt und aktualisieren Ihre Benutzeroberfläche. Wenn die Seite für den Benutzer nicht sichtbar ist, würden Sie dies nicht benötigen.

Verwandte Themen