2016-03-26 2 views
1

У меня есть только одно действие в моем приложении, которое содержит навигационное представление для перемещения по 3 фрагментам.Кнопка прослушивания кнопок в панели действий

Когда я перейти к фрагменту я получаю значок меню гамбургер изменен на застегивать в методе onNavigationItemSelected так:

actionBarDrawerToggle.setDrawerIndicatorEnabled(false); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Кнопка вверх появляется, но не имеет никакого эффекта пока нет.

Я хочу перейти к предыдущему фрагменту в стеке при нажатии кнопки, но я не могу добавить к нему эту кнопку.

Я попытался с помощью:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == android.R.id.home) { 
     onBackPressed(); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

, но это никогда не называют. Я думаю, что это не называется, потому что у меня нет родительской активности в манифесте.

Заранее спасибо.

ответ

0

Вы не должны вызывать onBackPressed, вы должны использовать метод транзакции фрагмента для транзакции между фрагментами, как я заменил мой текущий фрагмент на предыдущий фрагмент, используя метод replace. контейнер - это макет, содержащий фрагменты.

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
transaction.replace(R.id.fragment_container, newFragment); 
    transaction.commit(); 

Надеюсь, это даст вам некоторое направление.

if (id == android.R.id.home) { 
    //put the code like above here. 
    return true; 
} 
+0

Это не мой вопрос. Я знаю, как перемещаться между фрагментами, но где я должен помещать этот код? Я имею в виду, что нет прослушивателя или что-то для кнопки вверх в панели действий –

+0

Теперь я отредактировал ответ. На самом деле android.R.id.home соответствует кнопке, о которой вы беспокоитесь. – Ruag

+0

Я пробовал это, onOptionsItemSelected никогда не вызывается –

 Смежные вопросы

  • Нет связанных вопросов^_^