Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从webView1中的链接加载webView2中的html文件_Android_Html_Webview - Fatal编程技术网

Android 如何从webView1中的链接加载webView2中的html文件

Android 如何从webView1中的链接加载webView2中的html文件,android,html,webview,Android,Html,Webview,我使用webView1+本地html文件,就像带有一些链接的自定义导航栏一样 单击链接时,必须在webView2中加载所请求的html文件 这可能吗 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); //

我使用webView1+本地html文件,就像带有一些链接的自定义导航栏一样

单击链接时,必须在webView2中加载所请求的html文件

这可能吗

@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");

不知道为什么要使用这样的两个Web视图

但是,一个解决方案是在navWebView中添加一个Javascript接口桥,让它将URL传递回Java,然后Java可以通过loadUrl将其传递给第二个webView

关于JSF接口的信息:

从本例中简化计算:

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>


原因是当加载网站、facebook、twitter url时,navbarView可以通过app name/按钮查看…好吧,我接受它,因为它是其他人的完整解决方案,但最好同时接受这两个选项,但不能。。。我投你一票!