FragmentでViewの参照を持つとメモリリークする話と実装 Updated at Sat, Jan 18, 2020 View Bindingのドキュメントが更新され、onDestroyViewのタイミングで保持しているBindingの参照を解放する節が追記されました。 Use view binding in fragments Fragment自体のライフサイクルのほうが、FragmentのViewのライフサイクルより長いので、FragmentでBindingの参照を保持するとリークしてしまうためです。 この記事では、メモリリークをしないために、どのような実装が考えられるかを紹介していきます。 1. onDestoryViewで解放する 公式ドキュメントに載っている方法です。 // onCreatedViewで初期化 private var _binding: ResultProf
最近 Fragment 周りの実装を追う機会があり、 Android Developers の FragmentTransaction ページは各メソッドの説明が若干分かりづらいと思ったので自分用のメモとして主要なメソッドをまとめてみることにしました。 add 名前の通り Fragment を追加するときに利用します。 特定の container(ViewGroup) に Fragment を追加する場合の他、UIを持たない Fragment を追加する際にも利用します。 DialogFragment#show() も内部的には FragmentTransaction#add() を呼び出しています。 注意点として、画面遷移の際に add() を利用した場合、遷移前の Fragment に重ねて表示されるため、別途remove()する必要があります。 通常は画面遷移の用途としては add(
注:Fragment:1.3.0-alpha04 で onActivityResult() などがdeprecatedとなり、下記の方法は使えなくなりました。古いアプリをメンテナンスする方のために、記事は残します。 新しい方法 フラグメントで呼び出し元に結果を返すには、 setFragmentResult と setFragmentResultListener を使います。この方法は Fragment:1.3.0-alpha04 以降で使用可能です。 呼び出し元に結果を返す まずは呼ばれた側です。呼び出し元のフラグメントに結果を返すには、次のように parentFragmentManager の setFragmentResult を呼びます。 //データの入れ物 val data = Bundle() data.putString("text", text) // FragmentMan
この記事は Androidその2 Advent Calendar 2016 の6日目の記事です。 Fragment怖いですか? 怖いですね。 興味本位で、あるいは必要にかられてFragmentを使って痛い目を見たことのあるAndroidエンジニアがほとんどなのではないかと思います。 みんなのトラウマFragment。 そのあまりのややこしさから、SquareなんかはFragmentとの決別を宣言していますし、実際にFragmentを捨てるためのライブラリも書いていたりします。 みんなFragmentには煮え湯を飲まされてきているんですね。 しかし、Fragmentが有用である場合やFragmentの使用が強く推奨されるものもあったりしますよね。 ViewPagerの中でインタラクティブなページを表示したい ダイアログを表示したい 画面を構成するパーツの見た目とロジックを再利用したい etc
ViewPagerはスワイプでViewを移動するUIを実現するコンポーネントです.ViewPager#setAdapter()でPagerAdapterを継承したAdapterをセットして使います.基本的な使い方はこちらを参照してください. 各スクリーンはFragmentになっていることが推奨されていますので,ページ全体をスワイプで移動したいとき,スワイプでFragmentを切り替えるのに使うのがFragmentPagerAdapterです.最近はタブの切り替えなんかもスワイプで出来るようにするので,皆さんもよく使うと思います. 現在表示中のFragmentをAdapterから取得したい ViewPagerが現在表示してくれているFragmentを,Adapterから取得する方法について書きます.参考にしたページはこちらになります. - [1] android - Getting the
add / remove add(int containerViewId, Fragment fragment, String tag) ・Activity の状態に fragment を追加 ・fragment がすでに Activity に追加されている場合なにも起こらない(detach したインスタンスを add しても表示されない) ・containerViewId が 0 ではない場合、fragment の onCreateView() が null でなければそれを containerViewId の ViewGroup に追加 onAttach() → onCreate() → onCreateView() → onActivityCreated() → onStart() → onResume() * remove() 後に detach() された後の場合は onAtta
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く