我有一个可以使用Webview的活动。如果我单击webview中的任何URL,该URL将打开,但是当我单击后退按钮时,它不会出现在上一个Webview页面上,而是继续进行该webview页面之前的活动。
Scenerio: - 我正在使用Xyz活动,在Xyz活动的某些元素上单击它转到Webview活动,该活动显示webview上加载的URL。在webview上,如果我点击任何网址链接,它会打开,但是当我点击后退按钮时,它会返回到Xyz活动而不是Webview活动。我想回到Webview Activity而不是Xyz Activity。
任何人都可以指导我这样做,因为我无法找到我应该使用或实施的内容,以使其按我需要的方式工作吗? 任何帮助将不胜感激。在此先感谢...
修改: -
代码如下: -
public class StoryDetail extends SherlockActivity
{
WebView content;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.story_detail);
BaseStory story = BaseStory.createFromCursor(c); // BaseStory is a class containing Database values...
// Get the fields
content = (WebView) findViewById(R.id.content);
content.getSettings().setPluginState(PluginState.ON_DEMAND);
content.getSettings().setJavaScriptEnabled(true);
content.getSettings().setAllowFileAccess(true);
content.setWebChromeClient(new WebChromeClient());
content.setWebViewClient(new WebViewClient());
String html =
"<html><head>" +
"</head>" +
"<body>" +
"<section id=\"content\">" +
story.getContent() +
"</section>" +
"</body></html>"; //story.getContent() contains title, image, and url link supporting HTML Format itself.
//On clicking url link the webview open that page in Webview.
content.loadDataWithBaseURL("http://somelink/", html, "text/html", "UTF-8", "");
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
if(content.canGoBack()){
content.goBack();
}else{
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
}
答案 0 :(得分:5)
试试这个,它将满足您的目的
webView.setOnKeyListener(new OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if(event.getAction() == KeyEvent.ACTION_DOWN)
{
WebView webView = (WebView) v;
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
if(webView.canGoBack())
{
webView.goBack();
return true;
}
break;
}
}
return false;
}
});
对于Android 2.2及以上版本:
@Override
public void onBackPressed()
{
if(webView.canGoBack())
webView.goBack();
else
super.onBackPressed();
}
答案 1 :(得分:1)
使用此方法。
当您的目标Webview宣布:
WebView myWebView;
按照以下说明:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
if(myWebView.canGoBack()){
myWebView.goBack();
}else{
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
<强>更新强>
记录历史:
WebBackForwardList myWebBackForwardList = myWebView.copyBackForwardList();
String historyUrl = myWebBackForwardList.getItemAtIndex(myWebBackForwardList.getCurrentIndex()-1).getUrl();
然后按下后退按钮:
historyUrl.goBack();
答案 2 :(得分:0)
该链接正在打开一个新的webview意图。 这就是为什么当你单击后退按钮时,后退按钮的默认事件就是 &#34;回归一个意图&#34;正在被召唤。
如Badrul所做的那样覆盖它是我相信的最佳方式。