2016-12-29 4 views
1

Ich baue eine Chat-App mit Firebase. Ich versuche den Benutzer zu benachrichtigen, wenn er eine neue Nachricht erhält. Mein Problem ist mit this. Ich erhalte eine Fehlermeldung, dass builder(content.context) in builder cannot be applied to (anonymous com......)dies in Builder kann nicht angewendet werden

Hier ist mein Code:

reference1.addChildEventListener(new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     Map map = dataSnapshot.getValue(Map.class); 
     String message = map.get("message").toString(); 
     String userName = map.get("user").toString(); 
//If i am the sender 
     if(userName.equals(UserDetails.username)){ 
      addMessageBox("You:-\n" + message, 1); 
     } 
     else { 
//if somebody else send a message 
       addMessageBox(UserDetails.chatWith + ":-\n" + message, 2); 

      NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) 
          .setSmallIcon(R.drawable.hello) 
          .setContentTitle("My notification") 
          .setContentText("Hello World!"); 



     } 
    } 

Irgendwelche Tipps?

bearbeiten

wie unten das Problem in der Antwort erwähnt ist, dass dies auf den ChildEventListener bezieht und nicht die Aktivität so hatte ich die ChildEventListener so „diesen“ das beziehen können ein Verfahren aus der Seite zu erstellen Aktivität es selbst und rief die es, wo ich will es

+1

Verwenden 'MainActivity.this', oder was auch immer der Name Ihres Aktivität ist –

+0

Fehler gegangen ist, aber nicht empfangen Benachrichtigung – mahmoud

Antwort

2

this bezieht sich auf new ChildEventListener().

Sie benötigen einen Kontext, der zum Beispiel eine Aktivität wäre.

So können Sie entweder YourActivity.this oder

final Context context = this; 
reference1.addChildEventListener(new ChildEventListener() { 
    @Override 
    ... 

und verwenden context innerhalb des Ereignis-Listener

+0

Fehler ist weg, aber keine Benachrichtigung erhalten. – mahmoud

+1

Ich bin mir nicht sicher, was ich Ihnen sagen soll. Bei Ihrer Frage ging es nur darum, den Code zum Kompilieren zu bekommen –

+0

Sie haben nur einen Builder erstellt. Nichts in Ihrer Frage wird eine Benachrichtigung anzeigen –

Verwandte Themen