2015-02-24 30 views
8

Tôi đã cố triển khai android.support.v4.app.ActionBarDrawerToggle trong ứng dụng của mình; vì lớp này không được dùng nữaKhông được chấp nhận ActionBarDrawerToggle

Lớp này không còn được dùng nữa. Vui lòng sử dụng ActionBarDrawerToggle trong hỗ trợ-v7-appcompat.

Tôi đã chuyển sang android.support.v7.app.ActionBarDrawerToggle.

Trước khi tôi có thể gọi các nhà xây dựng theo cách này:

mDrawerToggle = new ActionBarDrawerToggle(
      this,     /* host Activity */ 
      mDrawerLayout,   /* DrawerLayout object */ 
      R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */ 
      R.string.drawer_open, /* "open drawer" description for accessibility */ 
      R.string.drawer_close /* "close drawer" description for accessibility */ 
     ){ 
     public void onDrawerClosed(View view) { 
      getActionBar().setTitle(mTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     public void onDrawerOpened(View drawerView) { 
      getActionBar().setTitle(mDrawerTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
    }; 

nhưng sau khi tôi đã chuyển sang các thư viện hỗ trợ v7 mới hơn, tôi nhận được lỗi

"ActionBarDrawerToggle() in ActionBarDrawerToggle cannot be applied to: 

toolbar: android.support.v7.widget.Toolbar 
Actual arguments: R.drawable.ic_drawer (int)" 

Rõ ràng tôi không giới thiệu một Thanh công cụ thích hợp vào hàm tạo, nhưng tôi không chắc chắn để hiểu sự khác biệt giữa hai đối số xung đột. Làm cách nào để tôi nhận được thanh công cụ được yêu cầu?

+1

Tôi thứ hai câu hỏi này. Tôi tìm thấy điều này như là một giải pháp một phần: getActionBar(). SetDisplayShowHomeEnabled (true); getActionBar(). SetIcon (R.drawable.ic_drawer); Vấn đề là biểu tượng có phần đệm - làm thế nào tôi có thể xóa nó? Ngoài ra - nơi tôi có thể tìm thấy một ic_drawer.png tốt? – mikeesouth

+1

Trong thời gian đó, câu hỏi này đã được trả lời trong http://stackoverflow.com/questions/26439619/how-to-replace-deprecated-android-support-v4-app-actionbardrawertoggle – k3b

Trả lời

17

tôi giải quyết vấn đề của tôi bằng cách nhập các phiên bản mới hơn android.support.v7.app.ActionBarDrawerToggle và bằng RecyclerView thay cho ListView như trong ví dụ này: How to make Material Design Navigation Drawer With Header View:

private ActionBarDrawerToggle mDrawerToggle; 
//... ... 
mDrawerToggle = new ActionBarDrawerToggle(
      this, 
      mDrawerLayout, 
      toolbar, 
      R.string.drawer_open, R.string.drawer_close){ 
        @Override 
        public void onDrawerOpened(View drawerView) { 
         super.onDrawerOpened(drawerView); 
         // code here will execute once the drawer is opened 
         getSupportActionBar().setTitle(mTitle); 
         invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
        } 
        @Override 
        public void onDrawerClosed(View drawerView) { 
         super.onDrawerClosed(drawerView); 
         // Code here will execute once drawer is closed 
         getSupportActionBar().setTitle(mDrawerTitle); 
         invalidateOptionsMenu(); 
    }; 

Nếu bạn vẫn gặp khó khăn khi kiểm tra ở đây: How to replace deprecated android.support.v4.app.ActionBarDrawerToggle

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