/var/log/messages

debugging with sixth sense

見えない Fragment の使い方

以下コンテンツを発見。

これも一つの見えない Fragment の使い方ですね。しかも setRetainInstance というメソドで configuration change に影響されない形になる模様。

サンプルコードに誤りがあるので以下にて訂正してみます。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // find the retained fragment on activity restarts
    FragmentManager fm = getFragmentManager();
    dataFragment = (RetainFragment) fm.findFragmentByTag(“data”);

    // create the fragment and data the first time
    if (dataFragment == null) {
        // add the fragment
        dataFragment = new RetainFragment();
        fm.beginTransaction().add(dataFragment, “data”).commit();
        // load the data from the web
        dataFragment.setData(loadMyData());
    }

    // the data is available in dataFragment.getData()
    ...
}

とは言え、dataFragment の型が RetainFragment ってだけなんですが。

そして

これを使って云々、とかって思っていたのですが、結局 orientation change で Activity のオブジェクトは破棄されてしまう訳で RetainFragment が持ってる何らかのオブジェクトで Activity なインスタンスを弄ろうとすると onDestroy から onCreate までの間 (というか破棄されて再生成されるまでの間) の間隙がアレです。

半分開き直りかけてたり。(ぇ

Comments