J'ai créé un Activity
qui a un titre et une vue Web dans un LinearLayout
. Dans la méthode onResume()
, il appelle webView.loadUrl(url)
. Le problème est que l'activité affiche d'abord le titre avec le reste de l'écran vide, puis le navigateur de périphérique est lancé avec la page de l'URL. Ce que je veux voir, c'est la page affichée dans la WebView
sous le titre. Quel pourrait être le problème?
Edit : Ok, a effectué une recherche supplémentaire et a trouvé celui-ci:
Cliquer sur les URL ouvre le navigateur par défaut
Il pointe vers le tutoriel WebView
ici .
Il suffit de mettre en œuvre le client Web et de le définir.
Répondant à ma question sur la base des suggestions de Maudicus et Hit.
Consultez le didacticiel WebView ici . Il suffit de mettre en œuvre le client Web et de le définir avant loadUrl . Le moyen le plus simple est:
myWebView.setWebViewClient(new WebViewClient());
Pour un traitement plus avancé du contenu Web, envisagez ChromeClient.
Utilisez ceci:
lWebView.setWebViewClient(new WebViewClient());
utiliser comme ceci:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dedline);
WebView myWebView = (WebView) findViewById(R.id.webView1);
myWebView.setWebViewClient(new WebViewClient());
myWebView.loadUrl("https://google.com");
}
Faites votre activité comme ça.
public class MainActivity extends Activity {
WebView browser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// find the WebView by name in the main.xml of step 2
browser=(WebView)findViewById(R.id.wvwMain);
// Enable javascript
browser.getSettings().setJavaScriptEnabled(true);
// Set WebView client
browser.setWebChromeClient(new WebChromeClient());
browser.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
// Load the webpage
browser.loadUrl("http://google.com/");
}
}
Je faisais face au même problème et j'ai trouvé la solution Documentation officielle d'Android sur WebView
Voici ma méthode onCreateView()
et ici j'ai utilisé deux méthodes pour ouvrir les URL
La méthode 1 ouvre l'URL dans le navigateur et
La méthode 2 ouvre l'URL dans la vue Web de votre choix.
Et j'utilise la méthode 2 pour mon application et voici mon code:
public class MainActivity extends Activity {
private WebView myWebView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_webpage_detail, container, false);
// Show the dummy content as text in a TextView.
if (mItem != null) {
/* Method : 1
This following line is working fine BUT when we click the menu item then it opens the URL in BROWSER not in WebView */
//((WebView) rootView.findViewById(R.id.detail_area)).loadUrl(mItem.url);
// Method : 2
myWebView = (WebView) rootView.findViewById(R.id.detail_area); // get your WebView form your xml file
myWebView.setWebViewClient(new WebViewClient()); // set the WebViewClient
myWebView.loadUrl(mItem.url); // Load your desired url
}
return rootView;
} }
Essayez ce code ...
private void startWebView(String url) {
//Create new webview Client to show progress dialog
//When opening a url or click on link
webView.setWebViewClient(new WebViewClient() {
ProgressDialog progressDialog;
//If you will not use this method url links are opeen in new brower not in webview
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
//Show loader on url load
public void onLoadResource (final WebView view, String url) {
if (progressDialog == null) {
// in standard case YourActivity.this
progressDialog = new ProgressDialog(view.getContext());
progressDialog.setMessage("Loading...");
progressDialog.show();
}
}
public void onPageFinished(WebView view, String url) {
try{
if (progressDialog.isShowing()) {
progressDialog.dismiss();
progressDialog = null;
}
}catch(Exception exception){
exception.printStackTrace();
}
}
});
// Javascript inabled on webview
webView.getSettings().setJavaScriptEnabled(true);
// Other webview options
/*
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.getSettings().setBuiltInZoomControls(true);
*/
/*
String summary = "<html><body>You scored <b>192</b> points.</body></html>";
webview.loadData(summary, "text/html", null);
*/
//Load url in webview
webView.loadUrl(url);
}
Répondez simplement, vous pouvez utiliser comme ceci
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webView = new WebView(this);
setContentView(webView);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("http://www.google.com");
}
}
Utilisation
mWebView.setWebViewClient(new WebViewClient());
Et le mWebView est l'objet de WebView