我有一个称为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
上实现该接口以在SearchActivity
和MyFragment
之间进行通信。
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;
}