fragment入門中
IOSアプリの新規移植の話をもらったので
Fragmentで書いてみるか‥‥って感じで試行錯誤中。
で fragmentの先生の id:sakura_bird1 さんのブログ & よちよち本 等で勉強始める
@sakura_bird1 URL なのですが、gistは名前の部分を削らないと、はてダだとプレビューできないです(汗
@kimukou2628 ありがとうございます!この記事は内容も書き直す必要ありのやつでした(^_^;) 直しておきます!
2013-09-30 21:21:21 via twicca to @kimukou2628
@sakura_bird1 onDestroyViewでinfrateしたものの破棄とかですか?、一個質問ですがfindViewbyIdはonStartで遣ってるコードもあるけどonActivityCreatedの方が良い感じなのでしょうか?
@kimukou2628 infrateの廃棄なんてやったことないですお(^_^;) find…はどっちが技術的によいのかわからんです?
下記の本のサンプル見たけど

- 作者: よちよちAndroidサンデープログラミングの会初心者教育委員会
- 出版社/メーカー: リックテレコム
- 発売日: 2012/08/31
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 48回
- この商品を含むブログを見る
- ファイルセレクタ
のサンプルは向き変えるとなぜか落ちる・・とりあえず保留で先にすすめる

Android UI Cookbook for 4.0 ICS(Ice Cream Sandwich)アプリ開発術
- 作者: あんざいゆき
- 出版社/メーカー: インプレスジャパン
- 発売日: 2012/03/16
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 47回
- この商品を含むブログ (18件) を見る
結局筆者の方のブログを漁ることになったり(汗

Androidタブレットアプリ開発ガイド Android SDK 3対応 (Smart Mobile Developer)
- 作者: 井形圭介,上中正統,尾古豊明,加藤勝也,小林慎治,瀬戸健二,高木基成,日高正博,夜子まま
- 出版社/メーカー: 翔泳社
- 発売日: 2011/09/16
- メディア: 大型本
- 購入: 4人 クリック: 156回
- この商品を含むブログ (7件) を見る
やはり微妙に違うのかもしれぬ。。
Menuが落ちる件)
Fragmet で onPrepareOptionsMenuを実装した時、1個も表示するものがない時に java.lang.ArithmeticException: divide by zero で落ちるんだけど対処方法無いのかな。。(汗。何で戻りが voidなん?
ActivityのonPrepareOptionsMenuだと 戻り値がbooleanで return falseで表示回避=>エラーで落ちない って対処使えるわけなんだけど(汗。空のMenuItem1個追加した。 URL 話も気になってる
これは 出すものがないのに
support-v4の
setHasOptionsMenu(true);
を読んでしまうと駄目ってことで
表示するものがないときは
onPrepareOptionsMenuあたりで
setMenuVisibility(false);
を呼ばないと駄目みたい。
でも onCreateの所で
setHasOptionsMenu(true);
しておかないと表示が全く出ないのはなんでだろう?*1
といろいろぐぐってみると
とかはFragmentManagerにcommitする直前で設定してるな。。。
layout設定する前でないと setHasOptionsMenu は動かないかもしれぬ。。
レイアウトの残像が残る件)
結論から言うと
android:background="@null"
とかくと残像が残ると。
− 2.02. Activity と Fragment · mixi-inc/AndroidTraining Wiki · GitHubFragmentうーん。replace自体は動いてるんだけど、画面に何でreplace前のレイアウトも残っちゃうんだろう? 差し替えしたいだけなのに。。
@kimukou2628 前のレイアウトもreplace で追加するようにしてみては?
@TakamiChie mixiの例のようにFrameLayoutコンテナに差し替える形でやってるのですが1)直前のremove/新規 add 2)replace でも駄目。Intent等を発行してonActitiyResultから戻ってくると古いレイアウトが消えてる状況
2013-10-03 12:18:33 via YoruFukurou to @TakamiChie
@kimukou2628 1 をreplace にしてみては?差し替えするフラグメントをadd でやっちゃダメというのは聞いたことないですが、framelayoutをコンテナとする場合replace だけでいいはずですよ(書籍サンプルではそうしてました)
@TakamiChie そちらの対応も必要なのですね(汗。ありがとうございます。Fragment自体はreplaceで差し替わっているようすがonDestroyViewでレイアウトが破棄されてない感じでして下記なコードを入れても改善されない感じでして。。
2013-10-03 12:32:39 via YoruFukurou to @TakamiChie
@TakamiChiesuper.onDestroyView();ViewGroup pv = (ViewGroup) getView().getParent();if (pv != null)pv.removeAllViews();
2013-10-03 12:33:23 via YoruFukurou to @TakamiChie
@TakamiChie 普通そうですよね(汗。一般的なサンプル見ても確かに。。初回は問題ないので 同じFrameLayout(コンテナ) に ボタンを押すたびに中身のレイアウト付きFragment差替っていうことをやろうとするのが間違いなのでしょうか?
2013-10-03 12:44:52 via YoruFukurou to @TakamiChie
http://twitter.com/TakamiChie/status/385612911210553344:twitter:detail:right
http://twitter.com/TakamiChie/status/385613167365083137:twitter:detail:right
@TakamiChie ありがとうございます。試しに onDestroyView,onCreateViewあたりの処理を 戻してみても挙動的には問題ないようです(でもlayoutが残ってしまう状況は変わらない<苦笑 support libraryを使ってるせいとか?うーん(汗
2013-10-03 13:38:29 via YoruFukurou to @TakamiChie
http://twitter.com/kerukerupappa/status/385627010627690496:twitter:detail:right
@kerukerupappa 今後ろに invalidate入れてみましたが駄目でしたorz わけわかんない。。これ動かないなら普通にViewPagerあたりで作りなおそうかなと今悩み中
@kerukerupappa @TakamiChie やっと原因がわかりました(汗。fragment経由でinfriateするlayout.xml背景を android:background="@null" 指定していた為残像が残る状態。@color/black としたらOK
@kerukerupappa @TakamiChie ViewFlipper あたりだと setDisplayedChild(idx)関数 とかで指定されてないidxのView以外はView.GONEしてくれるので同じ感覚でいました。色々と相談載っていただき大変有難うございました
TL上のメモ)
fragmentからactivityへのコールバックどうすんだと思ってググったら、みんな悩んでんのね。argumentsにコールバックリスナ突っ込めば…とか思ったけど、いずれにしろしっくりこない。
@mstssk そんなことできるの...
2013-10-24 01:28:06 via YoruFukurou to @mstssk
@zaki50 ※試してもいないただの妄想です。
2013-10-24 01:37:39 via twicca to @zaki50
@mstssk arguments って Bundle じゃないか...
2013-10-24 01:38:08 via YoruFukurou to @mstssk
@zaki50 試してみてN7では動いてるっぽいんですが、こんな事するよりonAttachでgetActivityのほうが手っ取り早いなー、という結論に。URL
2013-10-24 09:17:43 via twicca to @zaki50
@mstssk Fragment が再構築された時に動かないから一般的にこの方法はダメ
2013-10-24 10:13:27 via YoruFukurou to @mstssk
@zaki50 ありゃ、やっぱり駄目ですか。動作確認したつもりだったんですけど、今思うと寝ぼけてfragmentの再構築じゃなくactivityの再構築の動作確認しちゃってたような気がします。。。
2013-10-24 10:34:56 via web to @zaki50
*1:Menu追加前じゃないと駄目ってこと?