2013-06-05 43 views
6

我正在开发webview android应用程序。 我无法修复我的应用中的问题以导航。我正在使用此代码并尝试对此进行所有修改。在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.  

    } 
} 
     }); 

} 

} 

这不会回溯,而是退出应用程序。 任何帮助,将不胜感激。

回答

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或者您不会加载任何链接。

+0

感谢您的帮助! :) – ashu

+0

我在插入退出对话框代码时遇到问题,可以帮我在这里做退出对话吗? – ashu

+0

当然 - 用你的具体问题开一个新的问题,你已经尝试了什么,哪里出问题了,如果可以的话,我会帮忙的。 :) –

相关问题