1

MonoDroid ライブラリ プロジェクトを作成し、プロジェクトにいくつかのリソースを追加しました。これらのリソースを C# クラスで使用すると、正常に動作します。(このために、アプリケーション プロジェクトからコピーした .csproj ファイルに タグと タグを追加する必要がありました)。

ここで、.java ファイルに追加したリソースを使用したいと考えています。Java ソース ファイルを追加し、ビルド アクションを AndroidJavaSource に設定しました。残念ながら、R 名前空間を使用してリソースを見つけることができません。リソースを含む生成された .java ファイルがありません。Java ファイルで MonoDroid によって生成されたリソースを使用する方法はありますか?

背景: プロジェクトで ActionBar を使用したいので、Android の ActionBarCompat プロジェクト ([...]\android-sdk\samples\android-14\ActionBarCompat にある) をライブラリ プロジェクトのソース ファイルとして使用することを考えました。そこにある .java ファイルは、その res フォルダーのレイアウトやその他のリソースを使用します。これもコピーします。上記のアプローチを使用したいと思います。(現在)不可能な場合は、より良いアプローチでの回答を歓迎します。(いいえ、他の ActionBar 実装を教えないでください。ありがとうございます。それは質問の範囲ではありません。)

4

1 に答える 1

0

この問題は、しばらく前に Xamarin によって解決されたようです。古いバージョンの MonoDroid を使用していて、新しいバージョンにアップグレードする時間がありませんでした。これが回避策です。

Xamarin.Android コンパイラは、ライブラリ ファイルからリソースにリンクし、アプリ プロジェクトの Resources.designer.cs ファイルに UpdateIdValues() という関数を作成します。この関数は、ライブラリ プロジェクトのリソース ID を、最終的にメイン プロジェクトで生成される正しい ID に修正するために使用されます。このため、ライブラリ プロジェクトのリソース ID は、アプリ プロジェクトのように "public const int" ではなく、"public static int" として宣言されます。

ある時点で、彼らは実際にこの関数をどこかで呼び出すのを忘れていました。そのため、Xamarin の開発者が回避策を提供しました: http://forums.xamarin.com/discussion/comment/5816/#Comment_5816

回避策は私にとってはうまくいきます。Xamarin.Studio をアップグレードするときに、回避策を再度削除できます。

于 2013-08-30T09:51:42.073 に答える