android - 如何让我的 EditText 字段显示当前网页 URL?

标签 android url android-edittext onclicklistener

我正在制作一个网络浏览器应用程序,我需要知道如何获取当前网页 URL 以打印到 EditText 字段/地址栏。这是我的代码。

public class MainActivity extends Activity implements View.OnClickListener {
    private WebView webView;
    private EditText urlEditText;
    private ProgressBar progress;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.browserview);

    urlEditText = (EditText) findViewById(R.id.urlField);
    webView = (WebView) findViewById(R.id.webView);
    webView.setWebChromeClient(new MyWebViewClient());
    webView.setWebViewClient(new cWebViewClient());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setUserAgentString("Mozilla/5.0(X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/20100101 Firefox/4.0");
    webView.loadUrl("http://google.com");
    webView.getUrl();

    progress = (ProgressBar) findViewById(R.id.progressBar);
    progress.setMax(100);

    ImageButton openUrl = (ImageButton) findViewById(R.id.goBtn);
    ImageButton back = (ImageButton) findViewById(R.id.bckBtn);
    ImageButton fwd = (ImageButton) findViewById(R.id.fwdBtn);
    ImageButton ref = (ImageButton) findViewById(R.id.refBtn);
    ImageButton home = (ImageButton) findViewById(R.id.homeBtn);

    back.setOnClickListener(this);
    fwd.setOnClickListener(this);
    ref.setOnClickListener(this);
    home.setOnClickListener(this);
    openUrl.setOnClickListener(this);

}

        @Override
        public void onClick(View v) {
            //TODO Auto-generated method sub
            switch (v.getId()) {
                case R.id.goBtn:
                    String url = urlEditText.getText().toString();
                    webView.loadUrl(url);
                    break;
                case R.id.bckBtn:
                    if (webView.canGoBack())
                        webView.goBack();
                    break;
                case R.id.fwdBtn:
                    if (webView.canGoForward())
                        webView.goForward();
                    break;
                case R.id.refBtn:
                        webView.reload();
                    break;
                case R.id.homeBtn:
                        webView.clearHistory();
                    break;
                default:
                    break;
            }

                MainActivity.this.progress.setProgress(0);
        }




private class MyWebViewClient extends WebChromeClient implements com.continuumwear.continuumbrowser.MyWebViewClient {


    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        MainActivity.this.setValue(newProgress);
        super.onProgressChanged(view, newProgress);
    }

}
@Override
public void onBackPressed()
{
    if (webView.canGoBack())
    {
        webView.goBack();
    }
    else
    {
        super.onBackPressed();
    }
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.web_view, menu);
    return true;
}

public void setValue(int progress) {

    this.progress.setProgress(progress);
}`

最佳答案

public class MainActivity extends Activity implements View.OnClickListener {
    private WebView webView;
    private EditText urlEditText;
    private ProgressBar progress;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.browserview);

    urlEditText = (EditText) findViewById(R.id.urlField);
    webView = (WebView) findViewById(R.id.webView);
    webView.setWebChromeClient(new MyWebViewClient());
    webView.setWebViewClient(new cWebViewClient());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setUserAgentString("Mozilla/5.0(X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/20100101 Firefox/4.0");
    webView.loadUrl("http://google.com");
    webView.getUrl();

    progress = (ProgressBar) findViewById(R.id.progressBar);
    progress.setMax(100);

    ImageButton openUrl = (ImageButton) findViewById(R.id.goBtn);
    ImageButton back = (ImageButton) findViewById(R.id.bckBtn);
    ImageButton fwd = (ImageButton) findViewById(R.id.fwdBtn);
    ImageButton ref = (ImageButton) findViewById(R.id.refBtn);
    ImageButton home = (ImageButton) findViewById(R.id.homeBtn);

    back.setOnClickListener(this);
    fwd.setOnClickListener(this);
    ref.setOnClickListener(this);
    home.setOnClickListener(this);
    openUrl.setOnClickListener(this);

}

        @Override
        public void onClick(View v) {
            //TODO Auto-generated method sub
            switch (v.getId()) {
                case R.id.goBtn:
                    String url = urlEditText.getText().toString();
                    webView.loadUrl(url);
                    break;
                case R.id.bckBtn:
                    if (webView.canGoBack())
                        webView.goBack();
                    break;
                case R.id.fwdBtn:
                    if (webView.canGoForward())
                        webView.goForward();
                    break;
                case R.id.refBtn:
                        webView.reload();
                    break;
                case R.id.homeBtn:
                        webView.clearHistory();
                    break;
                default:
                    break;
            }

                MainActivity.this.progress.setProgress(0);
        }




private class MyWebViewClient extends WebChromeClient implements com.continuumwear.continuumbrowser.MyWebViewClient {
@Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        try {
            urlEditText.setText(url);
        } catch (Throwable e) {

        } 
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        MainActivity.this.setValue(newProgress);
        super.onProgressChanged(view, newProgress);
    }

}
@Override
public void onBackPressed()
{
    if (webView.canGoBack())
    {
        webView.goBack();
    }
    else
    {
        super.onBackPressed();
    }
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.web_view, menu);
    return true;
}

public void setValue(int progress) {

    this.progress.setProgress(progress);
}    

关于android - 如何让我的 EditText 字段显示当前网页 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33621257/

相关文章:

angularjs - AngularJS用$ location更改URL

http -//或/-/是有效的 URL 组件吗?

android - 在 edittext 中移动可绘制对象的位置

android - 使用 EditText 搜索 ListView

java - Android dagger2模块无法注入(inject)其他模块

php - 在 Android 应用程序中从 Mysql 加载照片

android - 面向 Android 11 时 SpeechRecognizer 不可用

android - 在后台线程中启动可运行的

python - 从脚本运行 scrapy Spider 时出现 urlopen 错误

android - 我可以覆盖 Android 输入法处理自动完成和自动更正的方式吗?