1

リンクをクリックした結果としてWebビューでjavascript関数が呼び出される前に、いくつかのことをしたいと思います(リンクは関数を呼び出します)。

「setOnTouchListener」をオーバーロードして実行しようとしましたが、実行しようとすると常に null になります ((WebView)v).getHitTestResult().getExtra();

    mMainWebView.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            WebView.HitTestResult hr = ((WebView)v).getHitTestResult();
            return false;
        }

    });

呼び出される関数の名前はわかっていますが、関数呼び出しのためだけに「shouldOverrideUrlLoading」のようなことを行うことはできますか?

ありがとう。

4

2 に答える 2

0

これはOPには少し遅れているかもしれませんが、私にとってはうまくいく解決策を見つけました。基本的に、呼び出すときsetOnTouchListener(...)は の値を渡す必要がありますnew OnTouchListener() {...}。注:私は使用していません(宣言からnew View.OnTouchListener() {...}削除)。View.

私よりもJavaの経験が豊富な人なら、これがなぜなのかを説明できると確信していますが、継承モデルまたはそれらの線に沿った説明に関係していると思います。

于 2012-08-14T12:55:14.173 に答える
0
    mWebView.setWebViewClient(new WebViewClient(){

                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    Log.d(TAG,"shouldOverrideUrlLoading url: "+url);
                    if( url.startsWith("http:") || url.startsWith("https:") ) {
                   //capture the url and call method you want
                        return false;
                    }

                    // Otherwise allow the OS to handle it
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    mcContext.startActivity( intent ); 
                    return true;

                }
于 2012-07-26T10:34:53.600 に答える