android - 如何转到 fragment 中 Webview 中的上一页?

标签 android android-fragments webview searchbar onbackpressed

我有一个名为 SearchActivity 的 Activity 。它有一个搜索栏和 4 个带有 Web View 的选项卡。当我输入文本并单击搜索时,所有选项卡都在加载我传递给它们的相应网址。但是当我点击后退按钮时,我希望所有的 webviews 返回到上一页,而不是 Activity 关闭。我试过下面的代码,但它不起作用。这是 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上添加一个接口(interface),并在MyFragment上实现该接口(interface),实现SearchActivityMyFragment之间的通信.

2.重写SearchActivityonBackPressed()方法,在按下后退按钮时添加自定义函数,并检查fragment的WebView是否可以走通过 goBack 监听器返回。如果可以回去,那就回去吧。如果不能,调用 super.onBackPressed()

搜索 Activity .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;
}

关于android - 如何转到 fragment 中 Webview 中的上一页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53351280/

相关文章:

image - WebView 到 TIFF 表示

Android Marshmallow 文本选择选项菜单操作

java - 附加变量进行 HTTP 调用时失败

android - 如何保存有关手机方向的数据?

android - 不同设备配置的不同 Assets

javascript - 在ScheduledExecutorService中执行javascript函数?

android - 使用 Gson 时应用程序崩溃 HTC Explorer A310e

java - 通过 Intent 传递 LatLng 的 ArrayList

java - 安卓错误 : Cannot perform this operation because the connection pool has been closed

java - 如何使用类名而不是索引来实例化 fragment 类