2014-11-22 19 views
7

Tôi có Ngăn điều hướng (appcompat v7) trong ứng dụng đang hoạt động hoàn toàn tốt.Android DrawerLayout.setDrawerLockMode() không hoạt động

Bây giờ tôi muốn vô hiệu hóa nó, cho đến khi người dùng mua hàng trong ứng dụng để mở khóa chức năng bổ sung. Vì vậy, trong Activity.onCreate() của tôi, sau khi khởi tạo ngăn kéo và Populating nó, tôi kêu gọi chức năng này:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 

Chức năng này không làm bất cứ điều gì. Ngăn kéo tiếp tục mở và đóng như bình thường sau khi chạm vào ngăn kéo ngăn kéo trên thanh tác vụ. Tôi đã thử gọi chức năng này trong Activity.onResume() mà không có bất kỳ sự khác biệt nào.

Cách chính xác để sử dụng chức năng này là gì? (Tôi đã thử tìm kiếm câu trả lời trực tuyến nhưng không thể tìm thấy bất kỳ điều gì giải quyết được vấn đề của mình). Bất kỳ trợ giúp được đánh giá cao, như tôi đang bị mắc kẹt về vấn đề này cho khá sometime ngay bây giờ.

Trả lời

5

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

chỉ được vô hiệu hóa việc bố trí mở ngăn kéo bằng cách trượt cho đến khi bạn nhấp vào biểu tượng điều hướng ngăn kéo giữ một boolean biến

ghi mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); trong onStart() và cũng viết bên dưới dòng mã

@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); 
    } 

điều này sẽ hoạt động chắc chắn

+0

Nơi nào bạn nghĩ rằng đoạn mã này sẽ đi đâu? – rgamber

+0

'onOptionsItemSelected' được gọi khi một mục từ menu Overflow được chọn, không phải khi một mục từ Drawer Navigation được chọn. – rgamber

+0

Đó là lý do tại sao tôi viết item.getItemId() == android.R.id.home nó được gọi là khi nút home trên ngăn điều hướng được nhấp vào –

3

Khi bạn gọi setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) nó khóa mở và đóng ngăn kéo chỉ bằng cách vuốt.

Ngăn kéo tiếp tục mở và đóng như bình thường sau khi nhấn vào ngăn kéo ngăn kéo trong thanh tác vụ vì ngăn kéo của bạn sẽ vẫn phản hồi cuộc gọi đến openDrawer(int), closeDrawer(int) mặc dù ngăn kéo bị khóa. Bạn cần thêm một số logic vào trình xử lý nút trình đơn của thanh tác vụ và không gọi openDrawer (int) khi bạn không muốn nó mở.

Btw, nó không quan trọng để gọi setDrawerLockMode(int) trong onСreate

Các vấn đề liên quan