Метод setHomeAsUpIndicator не определен для типа ActionBarDrawerToggle
Я пытаюсь использовать поддержку v4 ActionBarDrawerToggle
чтобы изменить индикатор панели действий на стрелку назад вместо 3 точек на панели навигации. Я также использую v4 Fragment
, v4 Drawerlayout
, v7 ActionBar
и v7 ActionBarActivity
,
Вот как я это использовал:
в onCreate:
DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_drawer,
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
Когда я пытаюсь изменить индикаторы, у меня не возникает проблем с setDrawerIndicatorEnabled
на ActionBarDrawerToggle
но я получаю вышеуказанную ошибку при попытке позвонить setHomeAsUpIndicator
, Я могу только позвонить setHomeAsUpIndicator
на getSupportActionBar()
:
public void turnOnActionBarUpIndicator()
{
mDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(null); //this compiles
mDrawerToggle.setHomeAsUpIndicator(null); //this line does not compile
}
Это приводит к изменению внешнего вида индикатора, но не его функциональности. Это означает, что я вижу стрелку в качестве индикатора, но он открывает ящик вместо того, чтобы подниматься вверх по стеку.
Как я могу получить как внешний вид и функциональность ActionBar
?
1 ответ
Возможно, если у вас есть левый ящик для навигации, который можно открыть одним движением слева, у вас всегда должен быть гамбургер в верхнем левом углу для его открытия. Делает вашу навигационную иерархию немного грязной, потому что она не подчиняется общепринятым правилам работы меню гамбургеров.
Во-вторых, переключение v4 устарело, используйте v7.