我有一个名为 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),实现SearchActivity
和MyFragment
之间的通信.
2.重写SearchActivity
的onBackPressed()
方法,在按下后退按钮时添加自定义函数,并检查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/