XamarinでFragmentがinflateできなくてキレそうになった
XamarinでAndroidのFragment使おうと思って調べながら書いてたわけ。
<fragment android:name="com.example.MyFragment" android:layout_width="wrap_content" android:layout_height="wrap_content" />
当然公式ガイド (古いけど)(古いのが放置されてるというのも問題だけど)にもこんなのが載ってる
<?xml version="1.0" encoding="utf-8"?> <fragment android:name="com.xamarin.sample.fragments.TitlesFragment" android:id="@+id/titles_fragment" android:layout_width="fill_parent" android:layout_height="fill_parent" />
そしたらやっぱり、android:name属性はAndroidのパッケージ名+クラス名を書くんやな、て思うじゃん?
そしたらInflateExceptionが出て全然表示できない。それで半日くらいググるのに費やしたけど解決しない。
最終的にはAndroidのパッケージ名ではなくC#のnamespaceを使ったら解決した。糞が。
<fragment android:name="MyApplication.Droid.MyFragment" android:layout_width="wrap_content" android:layout_height="wrap_content" />
なんなんだよマジで。なんでググってもここでハマった人いないの? 俺のプロジェクト名の付け方がおかしいのか? パッケージ名みたいにプロジェクト名もcom.example…とかやるべきなのか?
Android Studioならこんなことでハマることはありえない。 完全に納得がいかなかった。Xamarin辞めたい。