AndroidのMaster-Detailテンプレートでハマった話。
開発環境:EclipseでADTプラグインを入れた環境です。
発生したのは、エミュレータAndroid3.2(API 13) WXGAでした。
AndroidのActivityを新規作成していくと、
Master-Detailのテンプレートが選べます。
Android 3.0以降からフラグメントを利用することで、
タブレットでは1画面2ペインでリストと詳細内容を表示、
スマホでは1画面にリストを表示し、
そのアイテムをタップすると詳細ページに遷移して表示
できるようになるといったものです。
また、Androidのサポートライブラリappcompat_v7は、
Android3.0以前でもActionBar等が使えるようになったりします。
今回ハマったのはこれらの併用です。
なぜかサポートライブラリを利用した状況で、
テンプレートで作ったリストを表示しようとすると、
getActionBar().setDisplayHomeAsUpEnabled(true);
でNPE(Null Pointer Exception)が発生しました。
結構調べて、結局、下記が解決策でした。
同じように困っている方がいれば。
参考:
http://fragmentswithationbar.blogspot.jp/2014/04/fragments-with-action-bar-and-support.html
発生したのは、エミュレータAndroid3.2(API 13) WXGAでした。
AndroidのActivityを新規作成していくと、
Master-Detailのテンプレートが選べます。
Android 3.0以降からフラグメントを利用することで、
タブレットでは1画面2ペインでリストと詳細内容を表示、
スマホでは1画面にリストを表示し、
そのアイテムをタップすると詳細ページに遷移して表示
できるようになるといったものです。
また、Androidのサポートライブラリappcompat_v7は、
Android3.0以前でもActionBar等が使えるようになったりします。
今回ハマったのはこれらの併用です。
なぜかサポートライブラリを利用した状況で、
テンプレートで作ったリストを表示しようとすると、
getActionBar().setDisplayHomeAsUpEnabled(true);
でNPE(Null Pointer Exception)が発生しました。
たぶん何かの手順が前後したりしてこうなったのかなと思いますが、
サポートライブラリを利用すると、スタイルは強制的にサポートライブラリのテーマになります。
でも、実際のプログラムの方はサポートライブラリ対応版になっていなかったわけです。
- FragmentActivityをActionBarActivityに変更。
- getActionBar() を getSupportActionBar()に変更。
同じように困っている方がいれば。
参考:
http://fragmentswithationbar.blogspot.jp/2014/04/fragments-with-action-bar-and-support.html
コメント
コメントを投稿