2

私のxmlにはいくつかのフラグメントがあります(そのうちの4つ)。このコードでアクティビティを初めて実行するとき:

private void loadSenderFragment(int sender_fragment) {
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

    // TODO: Animation for later
    if (loadRunOnce) {
        //ft.setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out);
    }

    switch (sender_fragment) {
    case FILES_TO_SEND_FRAGMENT:
        Log.i(StaticValues.TAG, "files to send fragment visisble");
        ft.hide(fragmentSendDev);
        ft.show(fragmentFilesSend);
        break;
    case SEND_TO_FRAGMENT:
        Log.i(StaticValues.TAG, "hiding filesSend, loading senddev");
        ft.hide(fragmentFilesSend);
        ft.show(fragmentSendDev);
        break;
    }
    if (loadRunOnce)
        ft.addToBackStack(null);
    else {
        ft.hide(fragmentReceiveWait);
        ft.hide(fragmentReceiving);
        loadRunOnce = true;
    }
    ft.commit();
}

適切なビュー (Files_to_send_fragment) が表示され、コールバックを介してそのフラグメントから再度 loadSenderFragment を呼び出しますが、今回は SEND_TO_FRAGMENT の場合を除きます。私のログのためにこれが呼び出されることを知っています。しかし、fragmentFilesSend のレイアウトは表示され続けますが、他のレイアウトは表示されません (現在、白い背景のページ)。私のコードと私の意図から理解していることから、filessendを非表示にしてsenddevを表示します。その非表示/表示が機能しない理由を知っている人はいますか?

ところで、私は互換性ライブラリを使用しています。(通常のAPI Honeycomb +ライブラリも試してみましたが、まだ何もありません)。

4

2 に答える 2

0

hide() および show() 関数を呼び出す前に、これらのフラグメントを表示する予定の View に追加する必要があります。事前に初期化してください。

于 2013-07-19T22:11:38.907 に答える