2011-07-20 5 views
1

Android用モノに問題があり、ImageViewに背景画像または画像リソースとしてドロワブルを追加しています。私はLogoLarge.pngと呼ばれる私のドロウアブルフォルダ内のファイルを表示したいと思います。 Build ActionAndroidResourceに設定されています。だから私はこれを試してみてください。ImageViewにドロワブルを追加する

<ImageView 
    android:id="@+id/Logo" 
    android:src="@drawable/LogoLarge" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    /> 

LogoLargeリソースがResource.Designer.csで参照されています。プロジェクトの構築はうまくいきます。私はエミュレータに展開しようとすると、私は、ビルド出力に次のように取得する:

C:\Program Files (x86)\MSBuild\Novell\mandroid.exe -v --nosign --sdk-dir="C:\Android" --builddir="C:\Users\Vegard\Documents\Visual Studio 2010\Projects\HelloAndroid\HelloWorld2\obj\Debug\android" --framework-dir="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v2.2" --framework-dir="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0" -S="C:\Users\Vegard\Documents\Visual Studio 2010\Projects\HelloAndroid\HelloWorld2\obj\Debug\res" --package="HelloWorld2.HelloWorld2" --nolink --abi="armeabi" --java-sdk-dir="C:\Program Files\Java\jdk1.6.0_26" --debug --manifest-template="C:\Users\Vegard\Documents\Visual Studio 2010\Projects\HelloAndroid\HelloWorld2\Properties\AndroidManifest.xml" --sdk-platform="8" "C:\Users\Vegard\Documents\Visual Studio 2010\Projects\HelloAndroid\HelloWorld2\bin\Debug\HelloWorld2.dll" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v2.2\Mono.Android.dll" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\mscorlib.dll" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Core.dll" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.dll" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.dll" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.Linq.dll" 
monodroid : error 1: System.NullReferenceException: Object reference not set to an instance of an object [C:\Users\Vegard\Documents\Visual Studio 2010\Projects\HelloAndroid\HelloWorld2\HelloWorld2.csproj] 
    at MonoDroid.Utils.ProcessRocks+<ReadStandardOutput>c__Iterator5.MoveNext() [0x00000] in <filename unknown>:0 
    at Monodroid.Toolbox.InvokeCommand (IEnumerable`1 commandLine) [0x00000] in <filename unknown>:0 
    at Monodroid.Toolbox.InvokeAapt (System.String packageName) [0x00000] in <filename unknown>:0 
    at Monodroid.Droidinator.CreatePackagedResources (System.Collections.Generic.List`1 javaTypes) [0x00000] in <filename unknown>:0 
    at Monodroid.Droidinator.CreateApk() [0x00000] in <filename unknown>:0 
    at Monodroid.MainClass.Main (System.String[] argv) [0x00000] in <filename unknown>:0 
Done Building Project "C:\Users\Vegard\Documents\Visual Studio 2010\Projects\HelloAndroid\HelloWorld2\HelloWorld2.csproj" (SignAndroidPackage target(s)) -- FAILED. 

私はXMLファイルからandroid:srcプロパティを削除し、私のActivity1.csファイルでこれを入れた場合は、それが動作:

ImageView i = FindViewById<ImageView>(Resource.Id.Logo); 
i.SetImageResource(Resource.Drawable.LogoLarge); 

同じ問題は、XMLでandroid:background="@drawable/SomeBackground"を使用して任意のビューの背景画像を設定しようとしているときにも発生しますが、プログラムで行うときはうまく動作します。

ここで何が起こっているのですか?これはMonoDroidのバグですか?

+0

奇妙なことを確認してください。> –

+0

これは標準のHello Worldアプリケーション(Visual Studio 2010を使用して作成された空のアプリケーション)であり、このアプリケーションはうまくいきます。クラッシュするレイアウトXMLファイルにドロアブルを追加しようとするときだけです。 AVDは正常に動作しています。 –

+0

ファイル名に大文字を使用するイメージ/リソースを置くことはできないと思います。 LogoLarge.pngをlogolarge.pngに変更し、動作するか確認してください。 –

答えて

2

ドロアブルでは小文字しか使用できないため、LogoLargeはロゴサイズである必要があります。

+0

これはなぜそうであるかについて詳しく説明できますか? Androidの制限ではないようですが、Monodroidの制限が増えています。 –

+1

IDEAJなどのように、Eclipseや他のIDEでもそうです。ドロウアブルファイルに大文字を含めてはいけません:)他のモードでは、無効なファイル名エラーが発生します。 – Zwiebel

+0

'mandroid.exe'はAndroidResourceファイルを小文字のリソース名に変更します。その目的は、開発者がAndroidの「すべてが小文字でなければならない」要件に適合しながら、一貫したリソースケーシングを使用できるようにすることです。 – jonp

関連する問題