質問: LayoutInflater.from(context).inflate(R.layout.my_view, null); // 実行時にエラーが発生し× } } ``` なお``で囲うとよいというQ&AやDevelopersBlogを見ましたが、上記の問題によりうまく解決しませんでした。 どのようにすればCustomViewのインスタンスを取得できるのでしょうか? /* 追記 */ まずは解決したことを報告させていただきます。(腑には落ちていないですが...) 1について ・今回はクラスに問題があると考え階層構造が分かる最低限を抜粋しました 2について ・内部でthis(context, attrs, defStyleAttr)を呼ぶだけであったので省略しました 3について ・API Level 26を使用していたため総称型により明示的なcastを省略しました いずれについても詳細を記述するべきでした Android Studio Previewでプログラムを組んでいたためAndroid Studio 2.6で書き直したところ正常に機能しました。 そこで再びPreview版でエラーを確認するために実行したところ今度は何故かすんなりと正常に実行されました。 よく分かりませんが解決はしました。 エラーが発生してから正常に実行されるまで該当箇所は書き換えておらず、何故急に型が変わったのか不明です。
回答: 急ぎで書かれたのだと思いますが、いくつか記述がミスがあるように見受けます。 1. my_view.xmlなどのレイアウトファイルに必須のattributeが不足している(layout_width、layout_height) 2. カスタムViewであるMyViewのコンストラクタが足りていない(defStyleAttrのないものです) 3. 各種Viewへのキャストがない(`titleTV = (TextView)root.findViewById(R.id.title);`) それ以外ですと、ログを貼り付けた方がより正確な回答ができると思います。 ちなみに、Viewを継承しているクラスは`#inflate(Context, int, ViewGroup)`が利用できますので(内部的に同じことをしているだけですが...)、ご参考までに。