1

Gmail 앱과 같이 조각 탐색을 만들어야합니다. 그것은 마치 하나의 메인 프래그먼트 A를 가지고 있습니다. 네비게이션 드로어에서 다른 프래그먼트 (B, C, D ...)를 열 수 있으며, 새로운 프래그먼트를 열면 메인 프래그먼트 맨 위에 열립니다. 버튼, 모든 경우에 우리는 메인 프래그먼트 A로 돌아 왔고, 새로운 오픈 프래그먼트를 카운트하지 않아도된다. 그것은 보인다, 첫 번째 주요 조각은 우리가 조각을 backStack 추가하지 않고 메서드 (int FragmentTransaction)를 사용합니다. 그런 다음, 다음 조각 B는 back stack에 추가하여 메소드 add도 사용합니다. 다른 하나 (C 조각)를 열어야 할 때 두 번째 조각 B를 대체해야합니다. 그러나 replace() 메서드를 사용하면 모든 컨테이너를 대체하고 기본 조각 A는 조각 C 또는 B에서 뒤로 버튼을 눌렀을 때 표시되지 않습니다. 앱을 닫습니다. 그래서 문제는 조각 A를 잃지 않고 조각 B 또는 C 만 바꾸는 방법입니까?조각 탐색

답변

1

유효한 솔루션은 활동이 컨테이너 framelayouts을하는 것입니다. 첫 번째 것 (다른 하나의 아래에)은 당신의 프래그먼트 A를 포함합니다. 당신이 여는 모든 것은 두번째 컨테이너에 추가/대체 될 것입니다. 당신이 당신의 조각 B, C를 추가 할 경우

또 다른 해결책은 정적 레이아웃에 조각 A를 포함하고 그 위에 컨테이너의 FrameLayout이있는이다, D 등

+0

두 번째 솔루션을 만들려고합니다. 나는 조각 A를 정적으로 추가하고 다른 조각을 위해 상단 FrameLayout에 만듭니다. new Fragment를 열면 replace()를 사용하지만 문제가 생깁니다. 스택에 새 프래그먼트를 추가하면 onBack이 눌려집니다. 이전 스택을 추가하지 않으면 onBackpressed 앱이 닫힙니다. –

+1

제 생각에, 먼저 스택에만 추가해야합니다 (예 : B, C, D 등) –

+0

예 뒤로 추가 스택 첫 번째 조각 만 – Redman

1

개방이

HighlightFragment highlightFragment=new HighlightFragment(FirstReaderScreen.this); //Your fragment 
    getSupportFragmentManager() 
    .beginTransaction() 
    .add(R.id.LL_Fragment, highlightFragment) // LL_fragment is container 
    .addToBackStack(null) 
    .commit(); 

처럼 조각 및 활동 OnBackPress

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
     getSupportFragmentManager().popBackStack(); 
    } else { 
     super.onBackPressed(); 
    } 
} 
+0

왜, 내가 addToBackStack (널)을 수행 할 때, 내가 충돌 NullPointerException있어? –

+0

잘 작동합니다 Logcat을 게시 할 수 있습니까 – Redman

관련 문제