Ruft BroadCastReceiver vom Dienst in Android auf, um die Benutzeroberfläche in Fragment zu aktualisieren?

Ich möchte das @ aktualisierUI einesfragment vonservice.Ich benutzeGCMch habe diese Klasse fürGCM:

    public class GcmIntentService extends IntentService {

        public GcmIntentService() {
            super("GcmIntentService");
        }

        @Override
        protected void onHandleIntent(Intent intent) {
            Bundle extras = intent.getExtras();
            GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
            // The getMessageType() intent parameter must be the intent you received
            // in your BroadcastReceiver.
            String messageType = gcm.getMessageType(intent);

            if (extras != null && !extras.isEmpty()) {  // has effect of unparcelling Bundle
                // Since we're not using two way messaging, this is all we really to check for
                if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) {
                    Logger.getLogger("GCM_RECEIVED").log(Level.INFO, extras.toString());

                    showToast(extras.getString("message"));
                    Intent sendData = new Intent("chatupdater");
                    sendData.putExtra("msg",extras.getString("message"));
                    sendBroadcast(sendData);


                }
            }
   GcmBroadcastReceiver.completeWakefulIntent(intent);
        }

In demonHandleIntent() Methode Ich habe die Nachricht an ein Fragment gesendet, das bei @ registriert isBroadCastReceiver.Ich habe eineSlidingDrawerActivity und es hat viele Fragmente undChatFragment ist einer von ihnen. Ich möchte diese Nachricht von @ sendeGCMIntentService zuChatFragmen t.

Meine ChatFragment-Klasse:

public class ChatFragment extends Fragment {

    private EditText et_chat;
    Bundle mailData;
    String caller_mail;
    private ListView chatListview;
    private ChatWindowAdapter chatWindowAdapter;
    private List<ChatSession>PreviousChatSession;
    private List<ChatInfo> chatListItems;
    Button chat_send;
    public ChatFragment() {

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        getActivity().registerReceiver(new ChatBroadCastReceiver(),new IntentFilter("chatupdater"));

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.chat_window, null, false);
        et_chat = (EditText) v.findViewById(R.id.et_chat);
        chat_send = (Button) v.findViewById(R.id.bt_chat_send);
        chatListview = (ListView)v.findViewById(R.id.chat_listView);
        chatListItems = new ArrayList<ChatInfo>();
        chatWindowAdapter = new ChatWindowAdapter(getActivity(),chatListItems);
        chatListview.setAdapter(chatWindowAdapter);
        mailData=getArguments();
        caller_mail = mailData.getString(PropertyNames.Userinfo_Mail.getProperty());

        retrieveChats();

        chat_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ChatInfo chatInfo= new ChatInfo();
                chatInfo.setChat_text(et_chat.getText().toString());
                chatInfo.setDirection("right");
                chatListItems.add(chatInfo);
                chatWindowAdapter.notifyDataSetChanged();

                fetchID(caller_mail);
            }
        });

        return v;
    }

    private final BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Con,text context, Intent intent) {
             String msg = intent.getStringExtra("msg");
             Toast.makeText(getActivity(),msg,Toast.LENGTH_LONG).show();
        }
    };

My ChatBroadCastReceiver Klasse für chatFragment:

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

    }
}  

Ich sende die Nachricht mit Absicht insendBroadcast(sendData) und es innen erhaltenchatFragment und inonReceive() Methode Ich möchte die Nachricht in Toast sehen. Aber Toast wird nicht angezeigt.
Habe ich BroadcastReceiver korrekt für Fragment innerhalb des Dienstes implementiert?

BEARBEITEN Ich habe debuggt und gesehen, dass unter Teil nicht aufruft

private final BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("chat","I am in BroadCastReceiver");
         String msg = intent.getStringExtra("msg");
         Toast.makeText(getActivity(),msg,Toast.LENGTH_LONG).show();
    }
};

uss ich irgendetwas in das Menifest über den Empfänger aufnehme

Antworten auf die Frage(2)

Ihre Antwort auf die Frage