2013-10-16 26 views
8

私は「リスト・フラグメント - >詳細断片」のように使用フラグメントコンテナと二つの断片で活動していたときの事は私の第2のフラグメントが表示されている場合でも、ということである断片のisVisible()真実ではない

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(); 
    } 
} 

を最初の人は常にisVisible() == trueを返すので、2番目の人は決してリフレッシュしません。すでに削除、デタッチ、何も動作しません。最初のフラグメントは常に追加されて表示されます。また、タブレットや携帯電話でも同じことをテストします。たぶん私は何かを見逃しているが、それを正しく得ることができないので、どんな助けも高く評価されるだろう。 THX

+0

を設定した後 fragment.isMenuVisible()を試してみてください? – fasteque

+0

isVisible():フラグメントが現在ユーザーに表示されている場合はtrueを返します。これは、(1)が追加されたこと、(2)ウィンドウにビューが添付されていること、(3)隠されていないことを意味します。 http://developer.android.com/reference/android/app/Fragment.html#onHiddenChanged(boolean)で説明されているように、フラグメントの非表示状態をチェックし、isHidden()メソッドを呼び出します。 – fasteque

+0

フラグメントを置き換えるには、すでに追加されているかどうかを尋ねます。追加されている場合はadd()を呼び出します。 isHidden()の状態は、ユーザが見ることができないときの最初のフラグメントに対してはfalse、表示されるフラグメントは2番目のもの – labreu

答えて

0

ではなく、あなたが2番目のフラグメントを追加する場合は、追加を使用するか、また、現在のフラグメントを交換しようとしているfragment.setMenuUserVisibility(false)

+0

はサポートグループでのみ動作します – desgraci