アプリに 1 つのアクティビティがあり、AとBの 2 つのフラグメントがあります。MainActivityレイアウトには FrameLayout があります。MainActivityからFragmentManager を呼び出して、フラグメント A を FrameLayout に読み込みます。次に、フラグメント Aからフラグメント Bを FrameLayout に読み込みます。私のフラグメント Bでは、MainActivity からonBackPressed()と *onKeyDown(int _a, KeyEvent _b)* を実装して、フラグメント BのWebViewで戻るボタンを機能させます。
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();
}
}
これらの方法はどれも機能しません。戻るボタンはアプリケーションを閉じるだけです。