0

두 개의 조각을받는 컨테이너 하나를 포함하는 활동이 하나 있습니다. FragmentA 사용자가 클릭, 나는 활동 수준이 클릭을받을 때 다음Android 조각 간단한 백 스택

showFragment(new FragmentA()); 

private void showFragment(Fragment fragment) { 
    getSupportFragmentManager().beginTransaction() 
      .replace(R.id.container, fragment, fragment.getTag()) 
      .addToBackStack(fragment.getTag()) 
      .commit(); 
} 

내가 전화 : 은 활동을 처음 상태 일단 내가 가진 첫번째 조각을 시작

showFragment(new FragmentB()); 

을 지금 다시 누를 때 버튼은 조각 A (올바른 것)로 돌아가고 다시 버튼을 누르면 빈 화면이 표시됩니다 (그러나 동일한 활동에 머물러 있음). 나는 활동이 부모를 가지지 않기 때문에 앱을 종료하고 싶다.

조각 및 백 스택과 관련된 많은 게시물이 있지만이 간단한 솔루션을 찾을 수 없습니다. 내가 단편의 수를 늘릴 수 있고 그 방법을 유지할 필요가 있기 때문에 내가 단편 A 또는 단편 B를 누를지를 확인해야하는 경우를 피하고자한다.

답변

0

첫 번째 조각을 추가하면 무의식적으로 빈 화면을 추가하는 calling addToBackStack()이되므로 공백 화면이 나타납니다!

이제 무엇을 할 수 onBackPressed()에 다음과 같은 메소드를 호출하고 문제가

를 해결할 수
public void moveBack() 
    { 
//FM=fragment manager 
     if (FM != null && FM.getBackStackEntryCount() > 1) 
     { 
      FM.popBackStack(); 
     }else { 
      finish(); 
     } 
    } 

) (ONBACKPRESSED IN SUPER를 호출하지 마십시오;

그냥 위의 메서드를 호출하십시오!

+0

내 문제는 내가 알지 못하고 스택에 빈 화면을 추가한다는 것을 몰랐다는 것입니다./FM.getBackStackEntryCount()> 1이 문제를 해결하는지 확인합니다. 감사! – Bugdr0id

+0

단편 개념은 매우 까다 롭고 광대합니다! 여하튼 기쁜 것이 도울 수 있었다! –

0

addToBackStack (fragment.getTag())

단편 B를 위해 그것을 사용하는 경우에만이 아니라 조각에 대한

0

나는 당신의 조각 A가 아니라에 교체 조각을 추가 사용하려고 제대로 튀어되지 않은 생각

FragmentManager fragmentManager = getSupportFragmentManager(); 
int count = fragmentManager.getBackStackEntryCount(); 

및 특정 조각 수에 닫 활동을 할 때 당신은 또한 직접 활동 onBackPressed()finish()를 호출 할 수 있습니다 : 적절한 다시 탐색을 가지고,하지만 당신은 사용하여 다시 스택의 수를 확인할 수 있습니다.