2016-10-02 12 views
0

React-Native Androidネイティブモジュールトーストモジュールに従っており、このエラーが発生しています。React-Nativeネイティブモジュール 'canOverrideAnExistingModule()Error'

画像はこちらをクリックしてください= canOverrideAnExistingModule() Error

ここ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; 
    } 
}  

AnExampleReactPackageのコード()のために私のコードです:ToastModuleため

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(); 
     } 


} 

は、最後に私の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をビルドクラスでオーバーライドします。