通过接口回调构建通知
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);
我 运行 在尝试使用我已实现的界面构建通知时遇到了问题。
该接口实现了一个具有 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);