2015-11-17 12 views

Odpowiedz

5

Można wysłać zdarzenie z Java przy użyciu RCTDeviceEventEmitter.emit Sposób określony tutaj: DeviceEventManagerModule.java#L27

to zrobić trzeba najpierw mieć odniesienie do ReactApplicationContext, a następnie zadzwonić:

reactAppContext 
    .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) 
    .emit("keyboardWillShow1", null); 

zamiast "null" można wyślij dowolne dane, które następnie zostaną dołączone do wydarzenia, które otrzymasz po stronie JS.

Przykładem tego jest DeviceEventManagerModule.java#L49 - w ten sposób wysyłane są zdarzenia przycisku Wstecz do JS.

Następnie można użyć podobny wzór wysyłką zdarzeń z działalności /onResume zakładając, że masz odniesienie do ReactApplicationContext

Innym sposobem byłoby stworzyć swój własny moduł, który można zarejestrować do odbierania zdarzeń cyklu życia. Zobacz, jak to się robi w „Timing” modułu:

  1. „Timing” Moduł realizuje LifecycleEventListener.java interfejsu
  2. Gdy moduł jest inicjowany rejestruje się, aby otrzymywać cykl pośrednictwem tego interfejsu Timing.java#L126
  3. Można zaimplementować onHostPause i onHostResume metod tego interfejsu i użyj fragmentu z powyższego, aby wysyłać zdarzenia stamtąd
+0

Dziękujemy! Szukałem od teraz, jak zaimplementować onPause i onResume! –

Powiązane problemy