2016-12-12 2 views
1

액티비티 A & B 액티비티 AI 관리 된 프래그먼트 백 스택이 있습니다. 아래의 경우와 같습니다. 액티비티에는 조각 1에서 2에서 3에서 4까지 4 개의 프래그먼트가 있습니다. 다음 네 번째 조각에서 나는 지금 내가 원하는 것은 활동의 B 버튼 4의 프레스에서 B는 활동 B로 갈 것이고, 다시 열어야한다.이전 액티비티의 조각 백 스택 유지하기

내가 다시 눌러에 스택을

private void changeFragment(Fragment fragment) { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
    fragmentManager.beginTransaction().replace(R.id.act_home_fl_container, fragment).commit(); 
} 

을 조각을 교체하고 다시 관리하기 위해 다음과 같은 기능을 사용하고

boolean isPopFragment = getSupportFragmentManager().getBackStackEntryCount() > 0 ? true : false; 
    if (isPopFragment) { 
     getSupportFragmentManager().popBackStack(); 
    } 

내가에서 활동 B에 가고있을 때 내가 여기 개까지 성공을 가지고 있지만, 네 번째 단편을 다시 가져 와서 활동 A로 돌아 오면 활동 A의 단편 스택을 다시 관리 할 수 ​​없습니다.

시작하는 방법이 없습니다.

+0

두 가지 활동에 대해 두 개의 스택을 유지 관리해야합니다. 동일한 작업으로 조각을 관리 할 수는 있지만 나는이 github 프로젝트를 보길 권한다. [https://github.com/JetradarMobile/multibackstack].이 사람들은 아주 잘 구현했습니다. – Wizard

답변

0

당신이 당신의 활동 내부 onBackPressed를 오버라이드 (override) 상단에있는 조각 확인하고 당신이 원하는대로 무엇을 결정할 수 있습니다 :

@Override 
public void onBackPressed() 
{ 
    // code here 
    super.onBackPressed(); // check if you need this, depends on your needs 
} 
0

사용이 코드 조각 변경

public static void addFragment(final Fragment newFragment, final Fragment hideFragment) { 
    final FragmentManager fragmentManager = getFragmentManager(); 
    final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.hide(hideFragment); 
    fragmentTransaction.add(R.id.activity_home_container, newFragment, newFragment.getClass().getSimpleName()); 
    fragmentTransaction.addToBackStack(hideFragment.getClass().getSimpleName()); 
    fragmentTransaction.commitAllowingStateLoss(); 
} 

newFragment " 추가 할 단편 "
hideFragment"컨테이너에있는 단편 "

관련 문제