Я создал интерфейс для получения триггера от широковещательного приемника, но он всегда говорит, что объект интерфейса имеет нулевое значение!
Это код класса Broadcast Receiver, в котором определяется интерфейс:
public class GeofenceBroadcastReceiver extends BroadcastReceiver {
public interface ResultListener {
public void SomeWorkToDo();
}
private ResultListener resultListener;
public void setter(ResultListener listener){
Log.i("setter","working");
this.resultListener=listener;
}
@Override
public void onReceive(Context context, Intent intent) {
GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent);
if (geofencingEvent.hasError()) {
Toast.makeText(context, "error", Toast.LENGTH_SHORT).show();
return;
}
int geofenceTransition = geofencingEvent.getGeofenceTransition();
if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_DWELL) {
Log.i("Geo Fencing broadcast","Running");
Toast.makeText(context, "You Are Arrived!!!", Toast.LENGTH_SHORT).show();
resultListener.SomeWorkToDo();
}else {
Toast.makeText(context, "something went wrong", Toast.LENGTH_SHORT).show();
}
}
Это код файла манифеста:
<receiver android:name=".GeoFencing.GeofenceBroadcastReceiver" />
Этот код используется в MainActivity:
GeofenceBroadcastReceiver geofenceBroadcastReceiver=new GeofenceBroadcastReceiver();
geofenceBroadcastReceiver.setter(new GeofenceBroadcastReceiver.ResultListener() {
@Override
public void SomeWorkToDo() {
Log.i("our interface","working");
startActivity(new Intent(ViewPlace.this,ViewDirections.class));
finishAffinity();
}
});