通过接口回调构建通知

Building Notification through an Interface callback

我 运行 在尝试使用我已实现的界面构建通知时遇到了问题。

该接口实现了一个具有 4 个方法的处理程序,我遇到问题的方法是 onNotificationReceived()

这里是错误

The constructor NotificationCompat.Builder(new MQTTCommunicator.MQTTEventHandler(){}) is undefined

public 接口 MQTTCommunicator { void connect(String address, int port);// 添加添加多个连接的能力

我该怎么做才能解决这个问题?我试图将 is 转换为 MQTTEventHandler,但没有成功。 我以这种方式设置它,因为所有代码都是在库中实现的,我想避免硬编码任何 classes/references到一个应用程序项目。

接口基础Class

  void disconnect();

  void subscribe(String topic);

  void unsubscribe(String topic);

  void sendMessage(String topic, String message);

  void addEventHandler(MQTTEventHandler handler);

  void removeEventHandler(MQTTEventHandler handler);

  CommunicatorStatus getStatus();


  public interface MQTTEventHandler {
    void onStatusChanged(CommunicatorStatus status, String message);

    void onMessageReceived(String topic, String message);

    void onException(String message);

    void onNotificationReceived(String message);
  }

这是在 Activity 中,我在其中创建了一个 class 的实例,它实现了我的基本接口 class.

我将此对象命名为 mComm,并且可以向其注册 MQTTEventHandler。

 private void establishRecievers() {
    MQTTEventHandler mHandler = new MQTTEventHandler() {
      @Override
      public void onStatusChanged(CommunicatorStatus status, String message) {
        // TODO Auto-generated method stub
        // Do something with status
      }

      @Override
      public void onMessageReceived(String topic, String message) {
        // TODO Auto-generated method stub
        // Do something with the message
        adapter.add(topic + "|||" + message);
        adapter.notifyDataSetChanged();

      }

      @Override
      public void onException(String message) {
        // TODO Auto-generated method stub
        // Do something with exception
      }

      public void onNotificationReceived(String message) {
        // TODO Auto-generated method stub
        // Do something with exception
        Log.e("NOTIFICATION", message);

     //ISSUE IS HERE

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

      }
    };
    mComm.addEventHandler(mHandler);
  }

我使用 getApplicationContext();

解决了这个问题
NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(getApplicationContext()).setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle(topic).setContentText(message);