2016-04-14 24 views
2

ile hata ayıklamasını derlerken DeviceEventManagerModule öğesini bulamıyor. Telefon yanıt verirken, yerel olarak yanıt verenler için bir Javascript yöntemi çağırması için bir modül yazmaya çalışıyorum. Ancak, react-native run-android komutunu çalıştırdığımda, aşağıdaki hatayla birlikte compileDebugJavaWithJavac çatlakları. Bu sorun için ama hiçbir şans ile çözüm için büyük internet arama varJava dosyası, Java

import com.facebook.react.bridge.NativeModule; 
import com.facebook.react.bridge.ReactApplicationContext; 
import com.facebook.react.bridge.ReactContext; 
import com.facebook.react.bridge.ReactContextBaseJavaModule; 
import com.facebook.react.bridge.ReactMethod; 


import com.facebook.react.bridge.ReactApplicationContext; 
import com.facebook.react.bridge.WritableMap; 
import com.facebook.react.bridge.Arguments; 

import android.util.Log; 

public class CallListenerModule extends ReactContextBaseJavaModule { 
    BroadcastReceiverCustom broadcastRecevier; 

    ReactContext context; 

    public CallListenerModule(ReactApplicationContext reactContext) { 
     super(reactContext); 
     context = reactContext; 
     broadcastRecevier = new BroadcastReceiverCustom(reactContext); 
    } 

    @Override 
     public String getName() { 
     return "CallListenerModule"; 
    } 

    public void sendCallEvent(String incomingNumber){ 
     WritableMap params = Arguments.createMap(); 
     params.putString("Number", incomingNumber); 
     sendEvent(context, "CallRecevied", params); 
    } 


    private void sendEvent(ReactContext reactContext, 
         String eventName, 
         WritableMap params) { 
     reactContext 
      .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) 
      .emit(eventName, params); 
    } 
} 

:

CallListenerModule.java:44 error: package DeviceEventManagerModule does not exist (DeviceEventManagerModule.RCTDeviceEventEmitter.class) 

bu

CallListenerModule sınıftır. sendEvent yöntemi, docs'dan kopyalanır. @Nullable parametresini params parametresinden kaldırdım çünkü başka bir hataya işaret ettim ve bir parametre olmadan olay göndermeye niyetim yok.

Bu benim ilk yazı SO yüzden herhangi yapıcı eleştiri takdir üzerindedir :)

+0

Sen import ifadesini eksik: 'ithalat com.facebook.react.modules.core.DeviceEventManagerModule' – Robert

+0

Teşekkür !! Bu hile yaptı. Hangi paketlerin içe aktarılacağını anlamanın kolay bir yolu var mı? İçe aktarma ifadeleri her zaman belgelere dahil değildir. –

+0

Otomatik kod denetimi/derlemesi ile bir Java IDE kullanın - eksik içe aktarmalar hata olarak görüntülenir - genellikle içe aktarılacak sınıf önerileriyle. – Robert

cevap

4

Derslere com.facebook.react.modules.core.DeviceEventManagerModule içe unuttum. Bu nedenle aşağıdaki satırı ekleyerek sorunu çözebilir:

import com.facebook.react.modules.core.DeviceEventManagerModule