2016-04-05 3 views
0
@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
     FragmentManager.BackStackEntry bSE = getSupportFragmentManager().getBackStackEntryAt(getSupportFragmentManager().getBackStackEntryCount() - 1); 
     Fragment frag = getSupportFragmentManager().findFragmentByTag(bSE.getName()); 
     if (frag instanceof BackButtonBlocker) 
     { 
      BackButtonBlocker callback = (BackButtonBlocker) frag; 
      callback.onBackPressed(); 
     } 
     else { 
      getSupportFragmentManager().popBackStack(); 
     } 
    } else { 
     super.onBackPressed(); 
    } 
} 

Интерфейс BackButtonBlocker предназначен для обратного вызова. мой фрагмент реализует BackButtonBlocker, но иногда onBackPressed не происходит (onKeyUp также).Активность андроида onBackPressed not called

, когда я открываю навигационный ящик, onBackPressed и полная логика работает точно.

Почему деятельность должна терять фокус?

android.support.v4.app.Fragment

public interface BackButtonBlocker{ void onBackPressed();} 
+0

Я добавил фрагмент, используя ,, заменить «». – sofie

+0

Мне нужно получить обратный вызов в фрагменте, когда нажата кнопка «Назад». (например, для открытия любого диалога ..) – sofie

ответ

0

Я исправил эту проблему, добавив setFocusableInTouchMode(true); requestFocus(); на просмотр контейнера Mainactivity в

0

вынимает super.onBackPressed(); из else{}

0

То, что я сделал, что я не выполнил любой интерфейс для обработки обратно нажимается см ниже.

@Override 
public void onBackPressed() { 
    if (getDrawerLayout().isDrawerOpen(GravityCompat.START)) { 
     closeLeftMenu(); 
    } 
else { 

    if (getSupportFragmentManager().getBackStackEntryCount() > 1) { 
     super.onBackPressed(); 
    } else { 
     finish(); // Means it is home and you can exit it from here. 
    } 
}} 


When drawer is open just close it then use your code. 
+0

Здесь нет проблем. Мне нужно получить обратный вызов в фрагменте, когда нажата кнопка «Назад». (например, для открытия любого диалога ..) – sofie

+0

Я изменил условие, которое это может вам помочь. –