2017-06-22 1 views
2

私はベースフィーチャモジュールとフィーチャモジュールを持っています(あなたはそれを "子"と呼ぶことができます)。 ベース機能モジュールを含むのstrings.xmlファイル資産を持っていますAndroidインスタントアプリ - ベースフィーチャ資産からシンボルを見つけることができない

<resources> 
    <string name="app_string">Test String</string> 
</resources> 

私は以下のように、「子」機能の活動で、この文字列リソースを参照するようにしよう:

int resId = R.string.app_string; 

Androidのメーカーが表示されますこの参照を尊重し、私がそれをクリックしたときにapp_stringリソースに誘導することさえできます。しかし、コンパイル時に、私は次のエラーメッセージと会っています:

Error:(13, 25) error: cannot find symbol variable app_string 

Gradleのが私の「子」機能用のファイルのビルドがあまりにも依存している:

dependencies { 
    ... 
    implementation project(':base') 
} 

私もcompile project(':base')を試してみましたが、ありません成功。

紛失しているものがありますか?

答えて

6

基本モジュールと子モジュールのパッケージ名は異なります。com.example.basecom.example.childとしましょう。各リソースの独自のセットが含まれており、その識別子は、別々のRパッケージで収集されます。

  • com.example.base.R
  • com.example.child.R

あなたは、ベースモジュールで定義されたリソースにアクセスしようとしているので、変数の完全修飾名(com.example.base.R.string.app_string)で参照する必要があります。

+0

私はそれを試みましたが、残念ながら 'シンボル 'R'を解決できません。あなたがリストしたパッケージを使用する場合は、あなたが言ったように 'int resId = com.example.base.R.string.app_string'を試しています。 –

+0

ああ、面白いです、私は 'com.example.R.string.app_string'を使って解決しました(注意してください、そのパスに' base'ディレクトリはありません) –

関連する問題