13

ライブラリにしようとしている Android プロジェクトがあります。このコードで例外がスローされます。

_buttonStart = (Button) findViewById(R.id.buttonStart);

私が得る例外は次のとおりです。

java.lang.NoSuchFieldError: com.xxx.libraryname.R$id.buttonStart

Android のドキュメントでは、ライブラリがこれらのリソースにアクセスできるようにする必要があると明示的に述べているようです。

「たとえば、ライブラリ プロジェクトのソース コードは、その R クラスを介して独自のリソースにアクセスできます。」

ライブラリの を見ると/gen/com.xxx.libraryname/R.java/R/id/、buttonStart があります。しかし、メイン プロジェクトの を見ると、そう/gen/com.xxx.libraryname/R.java/R/idではありません。

メイククリーンをしました。

4

1 に答える 1

4

ライブラリ プロジェクトにも、メイン プロジェクトと同じ名前のレイアウト main.xml があります。

両方のレイアウト名が同じ場合、Android はホスト プロジェクトを優先します。この場合は「main.xml」です。最善の方法は、偶発的な衝突がないように、いくつかのプレフィックス表記を使用することです。

于 2014-10-26T10:01:31.970 に答える