Метод 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.

Другие вопросы по тегам