8

フラグメントコンテナと「リストフラグメント->詳細フラグメント」のように使用される2つのフラグメントを含むアクティビティがあります

private boolean isFirstFragmentAdded() {
    return getSupportFragmentManager().findFragmentByTag("FIRST_FRAGMENT_TAG") != null;
}

private boolean isFirstFragmentVisible() {
    return getSupportFragmentManager().findFragmentByTag("FIRST_FRAGMENT_TAG").isVisible();
}

private boolean isSecondFragmentAdded() {
    return getSupportFragmentManager().findFragmentByTag("SECOND_FRAGMENT_TAG") != null;
}

private boolean isSecondFragmentVisible() {
    return getSupportFragmentManager().findFragmentByTag("SECOND_FRAGMENT_TAG").isVisible();
}

private void addFirstFragment() {
    firstFragment = new FirstFragment();
    getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFragment, "FIRST_FRAGMENT_TAG").commit();
}

private void showFirstFragment() {
    firstFragment = new FirstFragment();
    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, firstFragment, "FIRST_FRAGMENT_TAG").commit();
}

private void addSecondFragment() {
    secondFragment = new SecondFragment();
    getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, secondFragment, "SECOND_FRAGMENT_TAG").commit();
}

private void showSecondFragment() {
    secondFragment = new SecondFragment();      getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, secondFragment, "SECOND_FRAGMENT_TAG").commit();
}

private void refreshVisibleFragment() {
    if (isFirstFragmentAdded() && isFirstFragmentVisible()) {
        refreshFirstFragment();
    } else if (isSecondFragmentAdded() && isSecondFragmentVisible()) {
        refreshSecondFragment();
    }
}

問題は、私の 2 番目のフラグメントが表示されている場合でも、最初のフラグメントが常に返さisVisible() == trueれるため、2 番目のフラグメントが更新されないことです。すでに削除、デタッチを試してみましたが、何も機能しません。最初のフラグメントは常に追加されて表示されているように見えます。また、タブレットと電話でテストすると、同じことが起こります。多分私は何かが欠けているかもしれませんが、それを正しく理解できないので、どんな助けも感謝します. どうも

4

1 に答える 1