1

webview特定の Web サイトをロードするために使用するアプリケーションを開発しています。actionbarまた、ウェブサイトのナビゲーションをカスタマイズしましたbutton。私のレイアウトがどのように見えるかは次のとおりです。

私にはどのように見えるか。

Web サイトを読み込むと、3 つのボタンすべてが表示されますが、その時点でユーザーが URL をクリックしたときにのみ表示されるようにして、ユーザーがこれらのボタンの目的を簡単に理解できるようにします。

これらのボタンにすべての機能を追加しました。これが私のコードです:

website_back = (ImageButton) cView.findViewById(R.id.website_back);
website_forward = (ImageButton) cView.findViewById(R.id.website_forward);
website_refresh = (ImageButton) cView.findViewById(R.id.website_refresh);

if (v.getId() == R.id.website_back) {
    webview.goBack();
}
if (v.getId() == R.id.website_forward) {
    webview.goForward();
}
if (v.getId() == R.id.website_refresh) {
    webview.reload();
}

私の WebViewClient:

private class HelloWebViewClient extends WebViewClient {

    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        progress.setVisibility(View.VISIBLE);
        super.onPageStarted(view, url, favicon);
    }

    public void onPageFinished(WebView view, String url) {
        progress.setVisibility(View.GONE);
        super.onPageFinished(view, url);
    }

    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        website_back.setImageResource(R.drawable.webview_back);
        view.loadUrl(url);
        return true;
    }
}

WebView で起動された Web サイトで、ユーザーが URL をクリックしたときにのみこれらのボタンを表示するにはどうすればよいですか?

あらゆる種類の助けをいただければ幸いです。

4

2 に答える 2

4

フェッチされている URL をリッスンするには、WebViewClient を WebView にアタッチする必要があります。

mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(url.equals(mOriginalUrl)){
            //initial url load, ignoring.
        }
        else {
            //url was navigated to - do something
        }

        return super.shouldOverrideUrlLoading(view, url);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        //page has finished loading
    }
});
于 2013-04-29T08:37:38.657 に答える
0

これは私のために働いた。それがあなたに役立つことを願っています。これを試して

ExternalSiteActivity.class

public class ExternalSiteActivity extends Activity{
WebView webView;
String productURL;
ProgressBar progressBar;
ImageButton webBackButton;
ImageButton webForwButton;
ImageButton webRefreshButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.external_site_activity);
    productURL= (String) getIntent().getStringExtra("productUrl");
    System.out.println(productURL+"**********");
    progressBar=(ProgressBar)findViewById(R.id.progress);
    progressBar.setVisibility(View.INVISIBLE);
    webView = (WebView) findViewById(R.id.webview);
    webBackButton=(ImageButton)findViewById(R.id.web_back_button);
    webForwButton=(ImageButton)findViewById(R.id.web_forw_button);
    webRefreshButton=(ImageButton)findViewById(R.id.web_refresh_button);
    webView.setWebViewClient(new MyWebViewClient());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl(productURL);
    webBackButton.setOnClickListener( new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            if(webView.canGoBack())
                webView.goBack();
        }
    });
    webForwButton.setOnClickListener( new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            if(webView.canGoForward())
                webView.goForward();
        }
    });
    webRefreshButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            webView.reload();
        }
    });
}

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        Log.v("shouldOverrideUrlLoading", "shouldOverrideUrlLoading");
        return true;
    }

    @Override
    public void onFormResubmission(WebView view, Message dontResend,
            Message resend) {
        Log.v("onFormResubmission", "onFormResubmission");
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        if(webView.canGoBack())
        {
            webBackButton.setEnabled(true);
        }
        else
        {
            webBackButton.setEnabled(false);
        }
        if(webView.canGoForward())
        {
            webForwButton.setEnabled(true);
        }
        else
        {
            webForwButton.setEnabled(false);
        }
        progressBar.setVisibility(View.VISIBLE);
        Log.v("onPageStarted", "onPageStarted");
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        progressBar.setVisibility(View.INVISIBLE);
    }

    @Override
    public void onLoadResource(WebView view, String url) {
        Log.v("on load ","load resources----");
    }

    // To handle "Back" key press event for WebView to go back to previous screen.
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
        webView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

}

于 2013-08-24T08:25:48.090 に答える