我遇到了一个问题,试图使用我实现的接口来构建通知。
接口实现了一个有4个方法的处理程序,我遇到的方法是onNotificationReceived()
这是错误
The constructor NotificationCompat.Builder(new MQTTCommunicator.MQTTEventHandler(){}) is undefined
public interface MQTTCommunicator { void connect(String address,int port); //添加添加多个连接的能力
我该怎么做才能解决这个问题?我试图将转换为MQTTEventHandler,但没有运气。我设置这种方式是因为所有代码都是在库中实现的,我想避免对任何类/引用进行硬编码应用项目。
接口基类
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中,我创建了一个实现我的基接口类的类的实例。
我将此对象命名为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);
}
答案 0 :(得分:0)
我使用getApplicationContext();
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(getApplicationContext()).setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(topic).setContentText(message);