2016-08-23 8 views
0

私は、Javaの基本を少しは理解している人が助けてくれると確信しているという簡単な質問がありました。重複するクラス:MainActivity

私はReact-Nativeを使用していて、iOSのすべてが機能していますが、アンドロイド用にコンパイルしようとすると「duplicate class:com.myApp.MainActivity」というエラーが発生します。

私はそのはおそらくMainActivityは、次のコードで2回定義されていますが、何らかの理由で私は私が知っているすべてを試みたが、私は1つにこれら二つのMainActivityをマージすることはできませんよね。

誰かが正しい方向に向かうことができますか?ありがとう!

package com.myApp; 

    import com.facebook.react.ReactActivity; 
    import com.oblador.vectoricons.VectorIconsPackage; 
    import com.tuanpm.RCTSmartconfig.RCTSmartconfigPackage; 
    import com.pusherman.networkinfo.RNNetworkInfoPackage; 
    import com.tuanpm.RCTMqtt.*; 

    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 "myApp"; 
     } 
    } 

    public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      mReactRootView = new ReactRootView(this); 

      mReactInstanceManager = ReactInstanceManager.builder() 
        .setApplication(getApplication()) 
        .setBundleAssetName("index.android.bundle") 
        .setJSMainModuleName("index.android") 
        .addPackage(new MainReactPackage(), 
       new VectorIconsPackage(), 
       new RCTSmartconfigPackage(), 
       new RCTMqttPackage()) 
        .addPackage(new RNNetworkInfoPackage())  // <- ADD HERE 
        .setUseDeveloperSupport(BuildConfig.DEBUG) 
        .setInitialLifecycleState(LifecycleState.RESUMED) 
        .build(); 

      mReactRootView.startReactApplication(mReactInstanceManager, "myApp", null); 

      setContentView(mReactRootView); 
     } 
    } 

UPDATE 1

@cybersamソリューションを以下の後、私はこれを取得しています:

:app:compileDebugJavaWithJavac 
/Users/nicolasferro/Desktop/myApp/android/app/src/main/java/com/myApp/MainActivity.java:9: error: cannot find symbol 
public class MainActivity extends ReactActivity implements DefaultHardwareBackBtnHandler { 
                 ^
    symbol: class DefaultHardwareBackBtnHandler 
/Users/nicolasferro/Desktop/myApp/android/app/src/main/java/com/myApp/MainActivity.java:12: error: cannot find symbol 
    protected void onCreate(Bundle savedInstanceState) { 
          ^
    symbol: class Bundle 
    location: class MainActivity 
/Users/nicolasferro/Desktop/myApp/android/app/src/main/java/com/myApp/MainActivity.java:14: error: mReactRootView has private access in ReactActivity 
     mReactRootView = new ReactRootView(this); 
     ^
/Users/nicolasferro/Desktop/myApp/android/app/src/main/java/com/myApp/MainActivity.java:14: error: cannot find symbol 
     mReactRootView = new ReactRootView(this); 
          ^
    symbol: class ReactRootView 
    location: class MainActivity 
/Users/nicolasferro/Desktop/myApp/android/app/src/main/java/com/myApp/MainActivity.java:16: error: mReactInstanceManager has private access in ReactActivity 
     mReactInstanceManager = ReactInstanceManager.builder() 
     ^
/Users/nicolasferro/Desktop/myApp/android/app/src/main/java/com/myApp/MainActivity.java:26: error: cannot find symbol 
       .setInitialLifecycleState(LifecycleState.RESUMED) 
             ^
    symbol: variable LifecycleState 
    location: class MainActivity 
/Users/nicolasferro/Desktop/myApp/android/app/src/main/java/com/myApp/MainActivity.java:20: error: cannot find symbol 
       .addPackage(new MainReactPackage(), 
           ^
    symbol: class MainReactPackage 
    location: class MainActivity 
/Users/nicolasferro/Desktop/myApp/android/app/src/main/java/com/myApp/MainActivity.java:16: error: cannot find symbol 
     mReactInstanceManager = ReactInstanceManager.builder() 
           ^
    symbol: variable ReactInstanceManager 
    location: class MainActivity 
/Users/nicolasferro/Desktop/myApp/android/app/src/main/java/com/myApp/MainActivity.java:29: error: mReactInstanceManager has private access in ReactActivity 
     mReactRootView.startReactApplication(mReactInstanceManager, "myApp", null); 
              ^
/Users/nicolasferro/Desktop/myApp/android/app/src/main/java/com/myApp/MainActivity.java:29: error: mReactRootView has private access in ReactActivity 
     mReactRootView.startReactApplication(mReactInstanceManager, "myApp", null); 
     ^
/Users/nicolasferro/Desktop/myApp/android/app/src/main/java/com/myApp/MainActivity.java:31: error: mReactRootView has private access in ReactActivity 
     setContentView(mReactRootView); 
        ^
11 errors 
:app:compileDebugJavaWithJavac FAILED 

答えて

0

あなたは正確に同じクラス名MainActivityを持つ2つのクラスを持っています。宣言した2つのクラスから両方の動作を継承する場合は、ファーストクラスの名前をBaseActivityに変更し、次にBaseActivityと宣言した2番目のMainActivityクラスを取得できます。 ReactActivity以来

1

はすでにActivityを拡張し、あなたが一つに(も許可されていない)同じフルネームで2つのpublicクラス(許可されていない)をマージすることができます

package com.myApp; 

import com.facebook.react.ReactActivity; 
import com.oblador.vectoricons.VectorIconsPackage; 
import com.tuanpm.RCTSmartconfig.RCTSmartconfigPackage; 
import com.pusherman.networkinfo.RNNetworkInfoPackage; 
import com.tuanpm.RCTMqtt.*; 

public class MainActivity extends ReactActivity implements DefaultHardwareBackBtnHandler { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mReactRootView = new ReactRootView(this); 

     mReactInstanceManager = ReactInstanceManager.builder() 
       .setApplication(getApplication()) 
       .setBundleAssetName("index.android.bundle") 
       .setJSMainModuleName("index.android") 
       .addPackage(new MainReactPackage(), 
      new VectorIconsPackage(), 
      new RCTSmartconfigPackage(), 
      new RCTMqttPackage()) 
       .addPackage(new RNNetworkInfoPackage())  // <- ADD HERE 
       .setUseDeveloperSupport(BuildConfig.DEBUG) 
       .setInitialLifecycleState(LifecycleState.RESUMED) 
       .build(); 

     mReactRootView.startReactApplication(mReactInstanceManager, "myApp", null); 

     setContentView(mReactRootView); 
    } 

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

これは多くの意味があり、実際には何をしようとしていたのですか?私はまだそこに行方不明のものがあれば、それ以外のものは調整が必要です。新しいログでポストを更新します –

+0

'シンボルを見つけることができません'というエラーを修正するには、それらの不足しているシンボルをインポートする必要があります。 'プライベートアクセスがあります 'というエラーは、'プライベート 'アクセスを持つ(スーパークラスの)変数にアクセスしようとしていることを意味します。後者の問題について助けが必要な場合は、(シンボルエラーを修正した後で)新しい質問を作成し、何をしようとしているのかを明確に述べるべきです。 – cybersam

0

だけでなく、あなたは同じで2クラスを持っています名前は同じですが、javaでコンパイルされない2つのパブリッククラスが同じファイルにあります。

関連する問題