3

次のように、for ループでプログラムによってアクティビティにフラグメントを追加します。

    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    for(int i = 0; i<bl.size(); i++)
    {ft.add(R.id.linearlayout, new BackflowDeviceFragment(), Integer.toString(i));}//for
    ft.commit();
    fm.executePendingTransactions();

次に、これらのフラグメントへの参照を次のように取得しようとします。

BackflowDeviceFragment frag = (BackflowDeviceFragment) fm.findFragmentByTag(Integer.toString(i));

参照を正常に取得できますが、フラグメントの UI 要素を操作しようとすると、それらが null であることがわかります。そのため、デバッグを行ったところ、UI 要素を操作するために作成したパブリック メソッドが、すべての UI 要素を設定する onCreateView() メソッドの前に呼び出されていることがわかりました。

onCreateView() はいつ呼び出されますか? これらの UI 要素をうまく扱うにはどうすればよいですか?

4

2 に答える 2

3

Fragment Documentationによると、 onCreateView() :

This will be called between onCreate(Bundle) and onActivityCreated(Bundle). 

そのため、初期化する前に UI 要素を参照しないでください。

于 2013-10-21T12:50:15.283 に答える
0

屈服してこの質問をする前に、約10分待ってください。アクティビティのライフサイクルを読んだ後、onCreate() の代わりに onResume() でこれらのパブリック メソッドを呼び出すと、すべて正常に動作することがわかりました。誰かがより良い解決策を持っている場合は、この質問を開いたままにします。

于 2013-10-21T12:47:58.320 に答える