2016-10-26 2 views
0

Я пытаюсь использовать шину событий для уведомления событий из моей библиотеки в службу. До сих пор я использую EventBus, как это:Обратный вызов в библиотеке android

public abstract class MLibraryClass{ 

.... 
EventBus.getDefault().post(event); 
... 

}

public class MService{ 
... 
public void onEvent(Event event){ 
//do stuff 
} 

}

и теперь я создал интерфейс для того, чтобы использовать функцию обратного вызова. Проблема в том, что обратный вызов имеет нулевую ссылку, и я не знаю, как это сделать.

интерфейс:

public Interface MInterface{ 
    void doStuff(Event event); 
} 

класс Библиотека:

public abstract class MLibraryClass{ 
... 
MInterface interface; 
Event event; 
... 
public void onEvent(){ 
    interface.doStuff(event) 
} 
... 

}

обслуживание:

public class MService implements MInterface{ 
... 
void doStuff(Event event){ 
    //some code 
} 
... 

}

ответ

0

Вы должны иметь метод в MLibraryClass, как показано ниже, и сделать что-то вроде этого:

public abstract class MLibraryClass{ 
... 
MInterface interface; 
Event event; 
... 
public void onEvent(){ 
    if(interface!=null) interface.doStuff(event) 
} 

public void setInterace(MyInterface myInterface){ 
    this.interface = myInterface; 
} 
... 

Android от места вы обращаетесь MLibraryClass, установить интерфейс.

Смежные вопросы