2014-11-22 3 views
7

내 응용 프로그램에서 내비게이션 서랍 (appcompat v7)가 제대로 작동합니다.안드로이드 DrawerLayout.setDrawerLockMode() 작동하지 않습니다

이제 사용자가 추가 기능을 잠금 해제하기 위해 인앱 구매를 구매할 때까지 비활성화하고 싶습니다. 그래서 내 Activity.onCreate()에, 서랍을 초기화하고 그것을 채우기 후에, 나는이 함수를 호출하고이 기능은 아무것도되지

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 

. 서랍은 액션 바의 서랍 캐럿을 두드린 후 정상적으로 열리고 닫힙니다. Activity.onResume()에서이 함수를 아무런 차이없이 호출하려고했습니다.

이 기능을 사용하는 올바른 방법은 무엇입니까? (온라인으로 답변을 시도했지만 내 문제를 해결할 수있는 항목을 찾을 수 없습니다.) 제가 지금이 문제에 관해서 꽤 오래 머물러 있기 때문에 어떤 도움을 주시면 감사하겠습니다.

답변

5

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

은 당신이 onStart()에서 부울 변수

쓰기 mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);를 계속 탐색 창 아이콘 을 클릭하고 또한 코드의 라인 아래에 쓰기까지 인식 시켜서 개방 서랍 레이아웃을 사용하지 않도록 설정되어

@Override 
    public boolean onOptionsItemSelected(android.view.MenuItem item) { 

     if(!disabled) 
     { 
     if (item.getItemId() == android.R.id.home) { 

      if (mDrawerLayout.isDrawerOpen(mDrawerLinearLayout)) { 
       mDrawerLayout.closeDrawer(mDrawerLinearLayout); 
      } else { 
       mDrawerLayout.openDrawer(mDrawerLinearLayout); 
      } 
     } 
     } 
     return super.onOptionsItemSelected(item); 
    } 

정상적으로 작동합니다

+0

onСreate에서 setDrawerLockMode(int)를 호출 괜찮습니다? – rgamber

+0

'onOptionsItemSelected'는 오버 플로우 메뉴의 항목이 선택 될 때 호출되며, 탐색 상자의 항목이 선택되지 않은 경우 호출되지 않습니다. – rgamber

+0

그 이유는 내가 item.getItemId() == android.R.id.home을 작성한 이유 네비게이션 서랍의 홈 버튼을 클릭했을 때도 호출됩니다. –

3

setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) 열기 및 닫기 드로어 에만을 스 와이프로 잠급니다. 서랍이 잠겨 있지만 당신의 서랍은 여전히 ​​openDrawer(int), closeDrawer(int)에 호출에 응답하기 때문에

서랍을 열고 작업 표시 줄에있는 서랍 캐럿을 눌러 후 정상 가까이하고 있습니다. 작업 표시 줄 메뉴 단추 수신기에 일부 논리를 추가하고 열지 않으려는 경우 openDrawer (int)를 호출하지 않아야합니다.

, BTW 당신이 코드가 갈 것이라고 생각

관련 문제