2013-02-18 80 views
0

我使用webView1 +本地html文件,如帶有一些鏈接的自定義導航欄。如何從webView1中的鏈接加載webView2中的html文件

點擊鏈接時,問題html文件必須加載到webView2中。

這可能嗎?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Fixed Portrait orientation 
    requestWindowFeature(Window.FEATURE_NO_TITLE); // No app title bar 
    setContentView(R.layout.activity_main); 

    myNavbarView = (WebView)findViewById(R.id.navbarView); 
    myNavbarView.getSettings().setJavaScriptEnabled(true); 
    myNavbarView.setVerticalScrollBarEnabled(false); 
    myNavbarView.setHorizontalScrollBarEnabled(false); 
    myNavbarView.setWebViewClient(new WebViewClient()); 
    myNavbarView.loadUrl("file:///android_asset/HTML/navbar.html"); 

    myWebView = (WebView)findViewById(R.id.webView); 
    myWebView.getSettings().setJavaScriptEnabled(true); 
    //hack to load twitter 
    myWebView.getSettings().setUserAgentString("Mozilla/5.0 (Linux; U; Android 2.0; en-us; Droid Build/ESD20) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"); 
    myWebView.setVerticalScrollBarEnabled(false); 
    myWebView.loadUrl("file:///android_asset/HTML/index.html"); 

回答

-1

Simplefied從這個例子摸出: http://blog.objectgraph.com/index.php/2012/03/16/android-development-javascript-bridge-example-fully-explained/

JavaScriptHandler.java

public class JavaScriptHandler { 
    MainActivity parentActivity; 
    public JavaScriptHandler(MainActivity activity) { 
     parentActivity = activity; 
    } 
    public void setResultUrl(String url){ 
     this.parentActivity.javascriptCallUrl(url); 
    } 
} 

MainActivity.java

// add line: 
myNavbarView.addJavascriptInterface(new JavaScriptHandler(this), "MyHandler"); 

// Verwerk calls van navbar.html via JavaScriptHandler.java 
public void javascriptCallUrl(final String url){ 
    Log.v(TAG, "MainActivity JSHandler used: " + url); 
    // I need to run set operation of UI on the main thread. 
    // therefore, the above parameter "url" must be final 
    runOnUiThread(new Runnable() { 
     public void run() { 
      myWebView.loadUrl(url); 
     } 
    }); 
} 

navbar.html

<a href="#" onclick="window.MyHandler.setResultUrl('file:///android_asset/HTML/index.html')">...</a> 
+0

嗯,我接受它,因爲它是爲他人提供的完整工作解決方案,但最好接受兩者但不能......我爲您投票! – Harry 2013-03-09 19:26:36

1

不確定爲什麼要使用兩個這樣的webViews。

然而,一個解決方案將是一個的Javascript接口橋添加到您的navWebView,讓它將URL傳遞迴Java那麼Java可以通過它傳遞給第二web視圖 loadUrl

信息上JSInterface: http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29

+0

原因是navbarView是visable與當一個網站,Facebook,Twitter的網址加載的應用程序名稱/按鈕...... – Harry 2013-02-18 22:27:00

+0

我制定了您的意見,看看我自己的答案。 – Harry 2013-02-19 16:22:10

+0

太棒了,希望它能很好地工作,歡呼聲 – 2013-02-19 18:10:10