У меня есть одно действие в моем приложении, и у меня есть 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();
}
}
Ни один из этих методов не работает, назад кнопка просто закрыть приложение.
Что вы имеете в виду? Я попытался @Override, но это тоже не сработало. –
Фрагменты не имеют функции onBackPressed. Вот почему он не называется. Действия имеют их, а не фрагменты. @Override, не работающий, должен был сказать вам, что Fragments не имеют функции с именем, поэтому он не будет вызван. –
Да, я знаю, но я реализую эти функции из MainActivity. Должен ли я сделать это по-другому? –