2016-10-02 8 views
0

React-Native Android 네이티브 모듈 토스트 모듈을 따라했으며이 오류가 계속 발생합니다. ToastModule에 대한React-Native 네이티브 모듈 'canOverrideAnExistingModule() Error'

package com.sharpsix; 

import com.facebook.react.ReactPackage; 
import com.facebook.react.bridge.JavaScriptModule; 
import com.facebook.react.bridge.NativeModule; 
import com.facebook.react.bridge.ReactApplicationContext; 
import com.facebook.react.uimanager.ViewManager; 

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

public class AnExampleReactPackage implements ReactPackage { 

     @Override 
     public List<Class<? extends JavaScriptModule>> createJSModules() { 
     return Collections.emptyList(); 
     } 

     @Override 
     public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { 
     return Collections.emptyList(); 
     } 

     @Override 
     public List<NativeModule> createNativeModules(
            ReactApplicationContext reactContext) { 
     List<NativeModule> modules = new ArrayList<>(); 

     modules.add(new ToastModule(reactContext)); 

     return modules; 
    }  
} 

코드 :

package com.sharpsix; 

import android.widget.Toast; 

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 java.util.Map; 
import java.util.HashMap; 

public class ToastModule extends ReactContextBaseJavaModule { 

    private static final String DURATION_SHORT_KEY = "SHORT"; 
    private static final String DURATION_LONG_KEY = "LONG"; 

    public ToastModule(ReactApplicationContext reactContext){ 
     super(reactContext); 
    } 


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

    @Override 
     public Map<String, Object> getConstants() { 
     final Map<String, Object> constants = new HashMap<>(); 
     constants.put(DURATION_SHORT_KEY, Toast.LENGTH_SHORT); 
     constants.put(DURATION_LONG_KEY, Toast.LENGTH_LONG); 
     return constants; 
     } 

    @ReactMethod 
     public void show(String message, int duration) { 
     Toast.makeText(getReactApplicationContext(), message, duration).show(); 
     } 


} 
이미지 여기를

클릭 = 여기

canOverrideAnExistingModule() Error는 AnExampleReactPackage()에 대한 내 MainApplication

에 대한 코드
package com.sharpsix; 

import android.app.Application; 
import android.util.Log; 

import com.facebook.react.ReactApplication; 
import com.facebook.react.ReactInstanceManager; 
import com.facebook.react.ReactNativeHost; 
import com.facebook.react.ReactPackage; 

import com.facebook.react.shell.MainReactPackage; 
import java.util.Arrays; 
import java.util.List; 

public class MainApplication extends Application implements ReactApplication { 

    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { 
    @Override 
    protected boolean getUseDeveloperSupport() { 
     return BuildConfig.DEBUG; 
    } 

    @Override 
    protected List<ReactPackage> getPackages() { 
     return Arrays.<ReactPackage>asList(
      new MainReactPackage(), 
      new AnExampleReactPackage() 
     ); 
     } 
    }; 

    @Override 
    public ReactNativeHost getReactNativeHost() { 
     return mReactNativeHost; 
    } 
}  

코드입니다

마지막으로 내 MainActivity :

package com.sharpsix; 

import com.facebook.react.ReactActivity; 

public class MainActivity extends ReactActivity{ 

    /** 
    * Returns the name of the main component registered from JavaScript. 
    * This is used to schedule rendering of the component. 
    */ 
    @Override 
    protected String getMainComponentName() { 
     return "SharpSix"; 
    } 
} 

누군가가 설명하거나이 좀 도와 주시겠습니까?

답변

0

ToastModule 클래스의 이름을 다른 것으로 변경하고 ToastAndroid의 ToastModule을 빌드 클래스의 이름으로 바꿉니다.

관련 문제