ActionBarDrawerToggle v7 или v4?

Я пытаюсь использовать ActionBarDrawerToggle в своем CustomDrawerLayout. Когда я пытаюсь импортировать import android.support.v4.app.ActionBarDrawerToggle; Он устарел. Когда я пытаюсь импортировать import android.support.v7.app.ActionBarDrawerToggle; Конструктор не принимает пять аргументов и значок не изменяется в ActionBar. Мой вопрос: я должен использовать v4 устаревший или v7 с четырьмя аргументами?

Вот.

v4

 /**v4 works with 5 arguments in constructor and change icon ActionBar but it's deprecated*/ import android.support.v4.app.ActionBarDrawerToggle; private ActionBarDrawerToggle tg; //ActionBarDrawerToggle deprecated tg = new ActionBarDrawerToggle(this, dl, R.drawable.ic_launcher, R.string.drawer_open, R.string.drawer_close){ public void onDrawerClosed(View view) { ab.setTitle(tl); supportInvalidateOptionsMenu(); } public void onDrawerOpened(View view) { ab.setTitle(tlf); supportInvalidateOptionsMenu(); } }; 

v7

 /**v7 works with 4 arguments in constructor and not change icon of ActionBar*/ import android.support.v7.app.ActionBarDrawerToggle; private ActionBarDrawerToggle tg; tg = new ActionBarDrawerToggle(this, dl, R.drawable.ic_launcher, R.string.drawer_open){ public void onDrawerClosed(View view) { ab.setTitle(tl); supportInvalidateOptionsMenu(); } public void onDrawerOpened(View view) { ab.setTitle(tlf); supportInvalidateOptionsMenu(); } }; 

CustomDrawerLayout

 public class CustomDrawerLayout extends ActionBarActivity implements OnItemClickListener{ private ActionBar ab; private DrawerLayout dl; private ListView lv; private ActionBarDrawerToggle tg; private List<ItensListView> fragments; private CharSequence tl; //titulo principal private CharSequence tlf; //titulo fragment @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_drawerlayout); getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.action_bar))); init(); if(savedInstanceState == null){ selectedItem(0); } } private void init(){ //actionbar onConfigActionBar(); //listview configItensListView(); lv = (ListView)findViewById(R.id.lv); lv.setAdapter(new DrawerLayoutListViewAdapter(this, fragments)); lv.setOnItemClickListener(this); //drawerlayout dl = (DrawerLayout)findViewById(R.id.dl); //actionbardrawertoggle tg = new ActionBarDrawerToggle(this, dl, R.drawable.ic_launcher, R.string.drawer_open){ public void onDrawerClosed(View view) { ab.setTitle(tl); supportInvalidateOptionsMenu(); } public void onDrawerOpened(View view) { ab.setTitle(tlf); supportInvalidateOptionsMenu(); } }; dl.setDrawerListener(tg); tl = tlf = getTitle(); } /** ativa actionbar e botao home na action bar */ private void onConfigActionBar(){ ab = getSupportActionBar(); ab.setDisplayHomeAsUpEnabled(true); ab.setHomeButtonEnabled(true); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); tg.onConfigurationChanged(newConfig); } /** necessario */ @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); tg.syncState(); } /** necessario */ @Override public boolean onOptionsItemSelected(MenuItem item) { FragmentTransaction ft; Fragment frag; if(item.getItemId() == R.id.action_chat){ frag = new HelloBubblesActivity(); ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.fl, frag, "HelloBubblesActivity"); ft.addToBackStack("back"); ft.commit(); } if (tg.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } /** necessario */ @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.custom_drawer_layout, menu); return true; } /** necessario */ @Override public boolean onPrepareOptionsMenu(Menu menu) { boolean status = dl.isDrawerOpen(lv); menu.findItem(R.id.action_settings).setVisible(!status); return super.onPrepareOptionsMenu(menu); } 

В конструкторе v7 вы должны передать это как параметры:

 new ActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout, int openDrawerContentDescRes, int closeDrawerContentDescRes) 

Хотя конструктор v4

 new ActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout, int drawerImageRes, int openDrawerContentDescRes, int closeDrawerContentDescRes) 

Я думаю, что в вашем конструкторе v7 вы сохранили drawerImageRes в качестве третьего параметра (ic_launcher).

Попробуйте вместо этого:

 new ActionBarDrawerToggle(this, dl, R.string.drawer_open, R.string.drawer_close)