我有一个称为SearchActivity的活动。它有一个搜索栏和4个带有Webview的选项卡。当我输入文字并单击“搜索”时,所有选项卡都在加载我要传递给它们的相应网址。但是,当我单击“后退”按钮时,我希望所有Web视图都返回到上一页,而活动将关闭。我已经尝试了下面的代码,但是没有用。这是SearchActivity的代码

public boolean onKeyDown(int keyCode, KeyEvent event) {

    int count = getFragmentManager().getBackStackEntryCount();

    if (count != 0 && (keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
        webView.goBack();
        getFragmentManager().popBackStack();
        //additional code
    } else {
        super.onBackPressed();
    }
    return super.onKeyDown(keyCode, event);
}

最佳答案

1.在SearchActivity上添加一个接口,并在MyFragment上实现该接口以在SearchActivityMyFragment之间进行通信。

2.重写onBackPressed()SearchActivity方法以在按下“后退”按钮时添加自定义功能,并检查片段的WebView是否可以通过goBack侦听器返回。如果可以返回,则返回。如果不能,请致电super.onBackPressed()

SearchActivity.java

public class SearchActivity extends AppCompatActivity{

public interface goBack{
    boolean canGoBack();
}

@Override
public void onBackPressed() {
    Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
   //fragment_container is a layout where fragment is populated

    if (fragment instanceof goBack && fragment.canGoBack()) {
        return;
    }
    super.onBackPressed();

}
}


MyFragment.java

public class MyFragment extends Fragment implements SearchActivity.goBack{
@Override
public boolean canGoBack() {
    if (webView.canGoBack()) {

        webView.goBack();
        return true;
    }
    return false;
}

09-10 20:09