2013-07-07 2 views
0

У меня есть одно действие в моем приложении, и у меня есть 2 фрагмента - A и B. В MainActivity макет есть FrameLayout. От MainActivity Я вызываю FragmentManager для загрузки фрагмента A в FrameLayout. Затем от фрагмент A Загружаю фрагмент B в FrameLayout. В моей фрагмент B я реализую onBackPressed() и * OnKeyDown (интермедиат _a, KeyEvent _b) * от MainActivity чтобы вернуться кнопки работы с WebView в фрагменте B. Но это работает, как будто я Бесполезный «Внесите это!onBackPressed and onKeyDown не работает

MainActivity интерфейс:

public interface onKeyDownListener { 
    public void onBackPressed(); 

    public boolean onKeyDown(int _a, KeyEvent _b); 
} 

Фрагмент B реализация:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
     mWebView.goBack(); 
     return true; 
    } 
    return getActivity().onKeyDown(keyCode, event); 
} 

public void onBackPressed() { 

    if (mWebView.isFocused() && mWebView.canGoBack()) { 
     mWebView.goBack(); 
    } else { 
     Toast.makeText(getActivity().getApplicationContext(), "This's working!", 50000).show(); 
     getActivity().onBackPressed(); 
    } 
} 

Ни один из этих методов не работает, назад кнопка просто закрыть приложение.

ответ

3

OnBackPressed - это функция для действия, а не фрагмент. Вам придется поймать его в Activity и передать его на фрагмент для обработки

+0

Что вы имеете в виду? Я попытался @Override, но это тоже не сработало. –

+1

Фрагменты не имеют функции onBackPressed. Вот почему он не называется. Действия имеют их, а не фрагменты. @Override, не работающий, должен был сказать вам, что Fragments не имеют функции с именем, поэтому он не будет вызван. –

+0

Да, я знаю, но я реализую эти функции из MainActivity. Должен ли я сделать это по-другому? –

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