내 앱에 하나의 빈 활동과 몇 개의 조각이 포함되어 있습니다. 활동의 onCreate
은 activity_main.xml
의 빈보기를 일부 버튼이 포함 된 MainFragment
으로 바꿉니다. 각 버튼은 별도의 조각을 실행하고 사용자는 한 조각에서 다른 조각으로 이동할 수 있습니다.조각으로 만 활동하기
MainFragment
에 도달 할 때까지 현재 조각을 이전 조각으로 올바르게 바꿉니다. 사용자가 MainFragment
에서 다시 누르면 주요 부분이 숨겨지고 기본 활동의 흰색 빈 배경이 표시됩니다. 그러나 나는이 시점에서 활동에서 벗어나고 싶다. 그것은 현명한 행동이기 때문이다.
조각 관리자에 조각이 남아 있지 않으면 onBackPressed에서 super.onBackPressed()를 두 번 호출하여이 작업을 수행 할 수 있습니다.
@Override
public void onBackPressed() {
super.onBackPressed();
FragmentManager manager = getSupportFragmentManager();
List<Fragment> fragments = manager.getFragments();
if (fragments == null || fragments.size() == 0) {
Log.d(TAG, "No more fragments: exit");
super.onBackPressed();
}
}
허용되는 작업 - 활동 워크 플로에 문제가 있습니까? 이 시나리오를 처리하는 더 나은/표준 방법이 있습니까?
PS : 이전에는 프래그먼트 대신 activity_main.xml에 버튼 목록이 있었지만 다른 프래그먼트의 빈 영역을 만지면 버튼에 클릭 이벤트가 발생했습니다. 활동. 이 문제를 피하려면 모든 조각에서'clickable = true'를 사용해야합니다. 나는 초기 화면조차도 조각을 사용하여 이것을 처리 할 것이라고 생각했다. – Amarghosh
첫 번째 호출을 제거하십시오 : super.onBackPressed(); ... if 문 안쪽에 하나만 남겨 두십시오. – W0rmH0le