2016-12-29 26 views
1

我正在構建一個使用firebase的聊天應用程序。我試圖在收到新消息時通知用戶。我的問題是this。我得到一個錯誤,指出builder(content.context) in builder cannot be applied to (anonymous com......)這在建設者不能應用

這裏是我的代碼:

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!"); 



     } 
    } 

任何提示嗎?

編輯如下 的答覆中提到

的問題是,這是指ChildEventListener,而不是活動,所以我不得不創建一個方法了側ChildEventListener所以「這個」可參考活動它自我,並把它叫做我想要它的地方

+1

使用'MainActivity.this'內使用context,或任何名義的活動是 –

+0

錯誤消失,但沒有收到任何通知 – mahmoud

回答

2

this指的是new ChildEventListener()。例如,您需要一個上下文,該上下文將是一個活動。

所以,你既可以使用YourActivity.this,或

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

和事件偵聽器

+0

錯誤消失了,但沒有收到任何通知。 – mahmoud

+1

不知道該告訴你什麼。你的問題只是關於讓代碼編譯 –

+0

你只創建了一個構建器。你的問題沒有什麼會顯示通知 –