我在片段内部有一个webview,每当我按下后退按钮时,我希望它由导航历史记录控制。
在我的情况下,当我按下后退按钮时,我会离开webview,但是我希望在按下按钮时我会返回到存储在导航历史记录中的状态(从离开webview之前)。
有任何解决方案吗?
我尝试使用onKey
,但它无法解决我的问题。这是我的代码:
public class FragmentAll extends Fragment implements
DialogInterface.OnCancelListener, DialogInterface.OnDismissListener,
OnDownloaExpodTerminated {
public static Fragment newInstance(Context context) {
FragmentAll f = new FragmentAll();
return f;
}
private WebView myWebView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
(((MainActivity) getActivity()) ).setActionBarTitle("Store");
myWebView = (WebView) v.findViewById(R.id.webView1);
setWebview();
v.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
// TODO Auto-generated method stub
if (arg1 == KeyEvent.KEYCODE_BACK && myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
return false;
}
});
return v;
}
...
}
答案 0 :(得分:1)
你可以尝试一下
@Override
public void onBackPressed() {
if (mWebView.canGoBack()) {
mWebView.goBack();
return;
}
// Otherwise defer to system default behavior.
super.onBackPressed();
}
答案 1 :(得分:0)
您必须在Fragment类中创建一个方法:
public void goBackWebview(){
myWebview.goBack();
}
现在,转到附加此片段的Activity类并覆盖onBackPressed():
@Override
public void onBackPressed() {
//if webview has history
myFragment.goBackWebView();
}
答案 2 :(得分:0)
您需要管理您的网页浏览中加载的链接列表。 你可以得到像这样的网址
web_des2.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
HitTestResult hitTestResult = web_des2.getHitTestResult();
if (hitTestResult != null) {
String url = hitTestResult.getExtra();
if (url != null && url.startsWith("http://")) {
yourUrlList.add(url);
web_des2.loadUrl(url);
}
}
return true;
}
return false;
}
});
如果您的列表没有清空,您可以检查onBackPress然后获取网址表单并将其加载到webview并从列表中删除。 你可以使用Stack来存储url,这样就可以直接使用pop()和push()函数了。如果喜欢+1