2014-09-18 3 views
0

У меня есть следующий код:BackPressed в Fragment не функционирует должным образом

v = inflater.inflate(R.layout.fragment_color, container, false); 
v.setFocusableInTouchMode(true); 
v.requestFocus(); 
v.setOnKeyListener(new View.OnKeyListener() { 

    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 

     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      if (mMenu.isOpened()) { 
       mMenu.closeMenu(); 
      } else { 
      } 
     } 
     return false; 
    } 
}); 

Когда я нажимаю кнопку назад, мое меню закрывается, как положено, но приложение закрывается, как хорошо, и это не должно быть.

Что я делаю неправильно с тем, что у меня есть? любая помощь будет оценена по достоинству.

+0

Попытка сделать 'System.out.println ("KeyCode =" + KEYCODE);' - предложение: переопределение ** активность ** s 'onBackPressed()' событие, вместо этого. –

+1

вернуть true из функции, что будет означать, что вы обработали спину нажатой, иначе ваша основная активность будет получена в обратном направлении, и ваше приложение выйдет – maaz

+0

@maaz Спасибо, что сработало. – Jack

ответ

1

Это связано с тем, что завершение текущего действия является поведением по умолчанию по умолчанию. Вам необходимо переопределить это поведение на , возвращая true в вашем onKeyListner. Ниже код должен работать на вас.

v = inflater.inflate(R.layout.fragment_color, container, false); 
v.setFocusableInTouchMode(true); 
v.requestFocus(); 
v.setOnKeyListener(new View.OnKeyListener() { 

    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 

     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      if (mMenu.isOpened()) { 
       mMenu.closeMenu(); 
       //It says that you have handled back key 
       return true; 
      } else { 
      } 
     } 
     return false; 
    } 
}); 
+0

его хорошая практика, чтобы повысить также, если ответ решает вашу проблему :) – Akhil

+0

очень спасибо, это сработало для меня –

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