2016-06-29 3 views
0

나는 MainActivity 길이가 AppCompatActivity입니다. 슬라이스 제스처로 바꿀 수있는 3 개의 단편. 중간에 작업 표시 줄을 제거하고 싶습니다. 그리고 사용자가 1 또는 3 단편에서 슬라이드 할 때 액션 바를 다시 추가하십시오. 이 경고 아래 저를주고,조각에있는 작업 표시 줄 숨기기/표시

@Override 
public void setMenuVisibility(boolean menuVisible) { 
    super.setMenuVisibility(menuVisible); 
    if(menuVisible && getActivity()!=null){ 
     getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 
} 

@Override 
public void setMenuVisibility(boolean menuVisible) { 
    super.setMenuVisibility(menuVisible); 
    if(menuVisible){ 
     getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 
} 

을 :하지만

45 개 프레임을 건너 뛴

나는 코드 아래에있다! 응용 프로그램이 주 스레드에서 너무 많은 작업을하고있을 수 있습니다.

getActivity().runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
     // hide/show action bar... 
    } 
}); 

앱이 지체되어

나는에 그것을 넣어했습니다. 어떻게하면 부드럽게 할 수 있습니까?

+0

를 추가하거나 이동할 수 있습니다 툴바에 대해? – Pato94

+0

'getSupportActionBar(). show()'/'getSupportActionBar(). hide()'사용을 고려해 볼 수 있습니까? – betorcs

+0

@betorcs : 내 경우에는 그런 방법이 없습니다. 나는 또한'getActivity(). getActionBar(). show();'를 시도했다. 하지만, 그 경우에는 또한 응용 프로그램이 충돌합니다 :'null 메서드 참조에 대한 가상 메소드 호출 void android.app.ActionBar.show() ' –

답변

0

중간 Fragment

AppCompatActivity activity = (AppCompatActivity) getActivity(); 
if (activity != null) { 
    activity.getSupportActionBar().hide(); 
} 

onResume 콜백에 다음 코드를 추가하고 다른 두 Fragment의의 onResume 콜백 당신이 액션 바을 사용하고

AppCompatActivity activity = (AppCompatActivity) getActivity(); 
if (activity != null) { 
    activity.getSupportActionBar().show(); 
}