0

いくつかのリンクがあるカスタムナビゲーションバーのように、webView1+ローカル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");
4

2 に答える 2

1

このように 2 つの webView を使用する理由がわかりません。

ただし、1 つの解決策は、 Javascript インターフェイス ブリッジnavWebViewに追加し、URL を Java に戻してから、Java がloadUrlを介して2 番目の webViewに渡すことができるようにすることです。

JSInterface に関する情報: http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29

于 2013-02-18T21:09:50.450 に答える
-1

この例からの単純化されたワークアウト: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>
于 2013-02-19T16:30:18.373 に答える