我正在开发一个webview Android应用程序。 我无法修复我的应用中的问题以进行反向导航。我正在使用此代码并尝试对此进行所有修改。
public class DeviceActivity extends Activity
{
private WebView web;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
web = (WebView) findViewById(R.id.webView);
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
web.getSettings().setPluginsEnabled(false);
web.getSettings().setSupportMultipleWindows(false);
web.getSettings().setSupportZoom(false);
web.setVerticalScrollBarEnabled(false);
web.setHorizontalScrollBarEnabled(false);
//Our application's main page will be loaded
web.loadUrl("file:///android_asset/fbp/index.html");
web.setWebViewClient(new WebViewClient() {
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
public void onBackPressed (){
if (web.canGoBack()) {
web.goBack();
}
else {
//My exit alert code goes here.
}
}
});
}
}
这不会导航回来,而是退出应用程序。 任何帮助将不胜感激。
答案 0 :(得分:15)
在Activity
代码中添加此代码(不在onCreate()
或嵌套在其他地方)
@Override
public void onBackPressed() {
if (web.copyBackForwardList().getCurrentIndex() > 0) {
web.goBack();
}
else {
// Your exit alert code, or alternatively line below to finish
super.onBackPressed(); // finishes activity
}
}
这将导航回WebView
历史堆栈,直到它为空,然后执行默认操作(在这种情况下,它完成活动)。
您可能还应该将WebViewClient设置为shouldOverrideUrlLoading
返回true
,否则您将不会加载任何链接。
答案 1 :(得分:0)
在您的代码中,您在onCreate()方法中保留了以下块。
if (web.canGoBack()) {
web.goBack();
}
else {
//My exit alert code goes here.
}
而是在onBackPressed()中保留相同的代码,如下所示
@Override
public void onBackPressed() {
if(web.canGoBack()) {
web.goBack();
} else {
super.onBackPressed();
}
}
也请参考Getting Started: WebView-based Applications for Web Developers in Android
答案 2 :(得分:0)
我们可以使用webview方法向前和向后导航。用于获取此WebView是否具有转发历史记录项的方法boolean canGoForward()
。 canGoBack()
用于获取此WebView是否具有后退历史记录项。 goBack()
返回此WebView的历史,goForward()
返回此WebView的历史。这是我的实现:
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.forward_btn:
if (mWebView.canGoForward()){
mWebView.goForward();
}else{
Toast.makeText(getApplicationContext(), "Tidak ada halaman lagi!", Toast.LENGTH_SHORT).show();
}
break;
case R.id.backward_btn:
if (mWebView.canGoBack()){
mWebView.goBack();
}else{
Toast.makeText(getApplicationContext(), "Tidak bisa kembali!", Toast.LENGTH_SHORT).show();
}
break;
case R.id.reload_btn:
layoutLoading.setVisibility(View.VISIBLE);
mWebView.reload();
break;
case R.id.back_btn:
onBackPressed();
break;
}
}