+ final ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ // Remove the title from the action bar.
+ actionBar.setDisplayShowTitleEnabled(false);
+
+ // Add the custom app_bar layout, which shows the favoriteIcon, urlTextBar, and progressBar.
+ actionBar.setCustomView(R.layout.app_bar);
+ actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
+
+ // Initialize the variables for favoriteIcon, urlTextBox, and progressBar
+ favoriteIcon = (ImageView) actionBar.getCustomView().findViewById(R.id.favoriteIcon);
+ urlTextBox = (EditText) actionBar.getCustomView().findViewById(R.id.urlTextBox);
+ progressBar = (ProgressBar) actionBar.getCustomView().findViewById(R.id.progressBar);
+ }
+
+ mainWebView.setWebViewClient(new WebViewClient() {
+
+ // setWebViewClient makes this WebView the default handler for URLs inside the app, so that links are not kicked out to other apps.
+ // Save the URL to formattedUrlString and update urlTextBox before loading mainWebView.
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+ mainWebView.loadUrl(url);
+ return true;
+ }
+
+ // Update the URL in urlTextBox when the page starts to load.
+ @Override
+ public void onPageStarted(WebView view, String url, Bitmap favicon) {
+ urlTextBox.setText(url);
+ }
+
+ // Update formattedUrlString and urlTextBox. It is necessary to do this after the page finishes loading because the final URL can change during load.
+ @Override
+ public void onPageFinished(WebView view, String url) {
+ formattedUrlString = url;
+ urlTextBox.setText(formattedUrlString);
+ }
+ });