Android レイアウトから生成した Fragment は FragmentTransaction の対象にしてはいけない ■ レイアウトから作成した Fragment には setArguments できない 前回のエントリで Fragment の Arguments の利点をいろいろ紹介しましたが、レイアウト内に <fragment> タグで定義して生成した Fragment には setArguments() をすることができません。 まず、Fragment.java のコードをみると Arguments を保持するフィールドである mArguments のコメントとして“生成時の引数である”と書いてあります。 http://tools.oesf.biz/android-4.0.1_r1.0/xref/frameworks/base/core/java/android/app/Fr
I have seen two general practices to instantiate a new Fragment in an application: Fragment newFragment = new MyFragment(); and Fragment newFragment = MyFragment.newInstance(); The second option makes use of a static method newInstance() and generally contains the following method. public static Fragment newInstance() { MyFragment myFragment = new MyFragment(); return myFragment; } At first, I tho
AndroidのFragment関係でハマった事のメモ書き。 1. Fragment(を継承したクラス)はstatic classでないと駄目 Fragmentをstaticで宣言していないと画面の向きが変わった際に行われる savedInstanceStateからの復帰時に以下のエラーが発生する。 java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx.yyyyy.zzzzz/xxx.yyyyy.zzzzz.HogeActivity}: android.app.Fragment$InstantiationException: Unable to instantiate fragment xxx.yyyyy.zzzzz.HogeActivity$HugaListFragment: make sure cl
以前Android TabActivityとTabHostを使用してTab画面を表示するで作成したTab画面はTabActivityを継承し作成していましたが Android3.xよりTabActivityは非推奨になったようです。 TabActivityを使用しないでTab画面を作成する方法です。 Android3.0より導入されたActionBarとFragmentを使用します。 対象: Build SDK:Android 4.0 (API 14) / Min SDK:Android 4.0 (API 14) Android 2.x でActionBarとFragmentを使用してTab画面を表示する方法はコチラ Android ActionBarとFragmentを使用してTab画面を表示する(Android 2.x) まずメインとなるアクティビティを作成します。 android.a
DialogFragment を private なインナークラスで定義してたら、 画面の回転(Activity再生成) でアプリが落ちてしまった。 出力された例外はこれ。 Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment ErrorCaseDialogFragment: make sure class name exists, is public, and has an empty constructor that is public Fragment が private なインナークラスなので、 外部からコンストラクタ呼び出せなくて例外になった様子。 使用したコードはこんなかんじ。 ErrorCaseDialogFragment のクラス定義を private s
Fragment のサンプルでは、setArguments() を使って Bundle を介して値を渡している例を多く見かけます。 ① HogeFragment f = new HogeFragment(); Bundle args = new Bundle(); args.putInt("num", num); f.setArguments(args); とやるより ② HogeFragment f = new HogeFragment(num); や ③ HogeFragment f = new HogeFragment(); f.setNum(num); とかやった方がいいんじゃない? Arguments 介するのは面倒じゃない?なにがいいの? と思う人も多いのではないでしょうか。 そこで、Arguments がどういいのかを説明したいと思います。 1. Fragment のコンスト
Android 3.0以降でタブレット向けに追加されたFragmentが、Android 4.0でスマートフォンでも利用出来るように拡張されました。 今まではTabletの画面構成の一部をフラグメント化(断片化)し、再利用に利用することが多かったと思われますが、 スマートフォン/タブレット共通のプラットフォームとなったことでUIの両対応に利用できるようになりました。 本エントリでは、リスト表示するアプリを例にスマートフォン、タブレットのUI両対応を行います。 フラグメントをつかうことでスマホ/タブレットで共通パーツをつかって効率的な開発をすることができます。 ■図1:スマートフォンとタブレットのList表示と詳細表示 上記の図は、List(緑色パーツ)と詳細表示(オレンジパーツ)の2つのUI部品を用意し、 タブレットでは2カラムで同時に表示しています。 スマートフォンでは画面が狭いため、緑
「PreferenceFragmentを使って2Paneな設定画面を作成する」「Fragmentを使ってMenuを動的に作成する」にて、Android3.0で追加された、Fragmentについて紹介してきました。 今回も、Fragmentの機能を紹介していきます。 FragmentはActivityなどと同じ様に、ライフサイクルを持ちます。 それらを確認した上で、Button操作による、Fragmentの追加/編集を行っていきましょう。 Fragmentのライフサイクル Fragmentにはライフサイクルがあります。 それは以下の通り。基本的な流れはActivityと同様ですが、UIの生成等に関わるMethodが追加されています。 〜コアライフサイクルMethod〜 1. onAttach(Activity) →Activityに関連付けされた際に一度だけ呼ばれる。 2. onCreate
「PreferenceFragmentを使って2Paneな設定画面を作成する」「Fragmentを使ってMenuを動的に作成する」にて、Android3.0で追加された、Fragmentについて紹介してきました。 今回も、Fragmentの機能を紹介していきます。 FragmentはActivityなどと同じ様に、ライフサイクルを持ちます。 それらを確認した上で、Button操作による、Fragmentの追加/編集を行っていきましょう。 Fragmentのライフサイクル Fragmentにはライフサイクルがあります。 それは以下の通り。基本的な流れはActivityと同様ですが、UIの生成等に関わるMethodが追加されています。 〜コアライフサイクルMethod〜 1. onAttach(Activity) →Activityに関連付けされた際に一度だけ呼ばれる。 2. onCreate
タブレットでFragmentを増やしたり減らしたりする超簡単なサンプル。 画面を左右にわけ、左半分に表示されているFragment上のボタンを押すと右半分に新たなFragmentを表示させる。右Fragmentのボタンを押すと右Fragmentを一つ消す。左Fragmentのボタンを連打すると右Fragmentが多重に積み重なる。 main.xml (親ActivityのView) ・fragment.xml (FragmentのView) ・TestActivity (親Activity) ・Fragment1(画面左に最初から表示されているFragment) ・Fragment2 (画面右に表示するFragment)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く