0

webview을 사용하여 특정 웹 사이트를로드하는 응용 프로그램을 개발 중입니다. 나는 또한 웹 사이트 내비게이션 button이있는 actionbar을 사용자 정의했습니다. 다음 뷰 내 레이아웃처럼 보이는 방법이다 : webview url을 듣는 방법 클릭하여 활성화/비활성화 버튼을 사용하여

How it looks to me.

내 세 개의 버튼을 볼 수 있습니다,하지만 난 그들에게 사용자가 어떤 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; 
    } 
} 

방법은 사용자가 웹보기에서 시작 웹 사이트에 어떤 URL을 클릭했을 때 나는 단지 그 버튼을 보일 수 있는가?

모든 종류의 도움을 주실 수 있습니다.

+0

을 시도합니다. Arraylist와 같은 일부 데이터 구조를 사용하는 경우 데이터 구조에서 데이터의 가용성을 확인할 수 있으며 현재 데이터 구조에있는 위치는 어디입니까? –

답변

2

가져 오는 URL을 수신 대기하려면 WebView에 WebViewClient를 연결해야합니다.

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 
    } 
}); 
+0

내 편집 된 질문을 참조하십시오. 나는 이미 그것을 사용했다. 'shouldOverrideUrlLoading'은 항상 URL의 첫 번째로드에서 호출됩니다. 실제로 사용자가 'webivew.' – Anupam

+0

의 어떤 곳을 클릭했을 때만 shouldOverrideUrlLoading 내에서 실제로 url을 던지고 있다고 가정하고, 전달한 URL에 대해 문자열 일치를 수행하고 무시한 경우에만 무시해야합니다. 참된. –

+0

내 편집을 참조하십시오, 당신이 필요로 할 것입니다. –

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); 
} 

}