Navigation Drawer를 사용할 때 Android 개발자는 ActionBar에서 "Navigation Drawer에 표시되는 화면에만 실제로 Navigation Drawer 이미지가 있어야하며"다른 모든 화면에는 전통적인 업 캐럿이 있어야합니다.
자세한 내용은 여기를 참조하십시오 : http://youtu.be/F5COhlbpIbY
하나의 활동을 사용하여 여러 레벨의 조각을 제어하고 탐색 드로어 이미지를 모든 레벨에서 표시하고 작동시킬 수 있습니다.
낮은 수준의 조각을 만들 때 ActionBarDrawerToggle
setDrawerIndicatorEnabled(false)
탐색 창 이미지를 숨기고 위로 캐럿을 표시하도록 호출 할 수 있습니다
LowerLevelFragment lowFrag = new LowerLevelFragment();
//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout,
lowFrag, "lowerFrag").addToBackStack(null).commit();
내가 겪고있는 문제는 원래 탐색 서랍 이미지 대신 여전히 업 캐럿이 표시하는 최상위 조각으로 돌아갈 때입니다. Navigation Drawer 이미지를 다시 표시하기 위해 최상위 조각에서 ActionBar를 "새로 고침"하는 방법에 대한 제안 사항이 있습니까?
해결책
톰의 제안이 나를 위해 일했습니다. 내가 한 일은 다음과 같습니다.
주요 활동
이 활동은 앱의 모든 조각을 제어합니다.
다른 조각을 대체하기 위해 새 조각을 준비 할 때 DrawerToggle을 다음 setDrawerIndicatorEnabled(false)
과 같이 설정 했습니다.
LowerLevelFragment lowFrag = new LowerLevelFragment();
//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout,
lowFrag).addToBackStack(null).commit();
다음으로의 재정의 onBackPressed
에서 DrawerToggle을 다음 setDrawerIndicatorEnabled(true)
과 같이 설정하여 위의 내용을 되돌 렸습니다 .
@Override
public void onBackPressed() {
super.onBackPressed();
// turn on the Navigation Drawer image;
// this is called in the LowerLevelFragments
setDrawerIndicatorEnabled(true)
}
LowerLevelFragments에서
내가 수정 한 조각에서 다음 onCreate
과 onOptionsItemSelected
같이 :
에서는 onCreate
추가 setHasOptionsMenu(true)
옵션 메뉴를 구성 할 수 있도록. 또한 작업 표시 줄 setDisplayHomeAsUpEnabled(true)
에서 < 을 활성화하도록 설정하십시오 .
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// needed to indicate that the fragment would
// like to add items to the Options Menu
setHasOptionsMenu(true);
// update the actionbar to show the up carat/affordance
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
}
그런 다음 < 을 누를 onOptionsItemSelected
때마다 액티비티에서를 호출 하여 계층 구조에서 한 수준 위로 이동하고 탐색 창 이미지를 표시합니다.onBackPressed()
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Get item selected and deal with it
switch (item.getItemId()) {
case android.R.id.home:
//called when the up affordance/carat in actionbar is pressed
getActivity().onBackPressed();
return true;
…
}
.replace(R.id.frag_layout
.. 이것이 하나 이상의 계층 구조 수준이라면 .add
백 스택에 기대할 것입니다 .
theDrawerToggle.setDrawerIndicatorEnabled(false);
조각 내부를 어떻게 참조 합니까? 메인 활동 클래스 파일에 선언되어 있다고 생각합니다. 이것을 참조하는 방법을 찾을 수 없습니다. 힌트가 있습니까?
setDisplayOptions()
메소드 ToolbarWidgetWrapper
가 동일한 조각을 두 번 입력 할 때 아이콘을 다시 만들지 않습니다. 다른 사람들 도이 문제에 걸려 넘어 질 때 여기에 남겨 두십시오.