Je charge une page d'actif HTML dans une vision webview à l'aide de
webMain.loadUrl("file:///android_asset/record.html");
5 Réponses :
Oui, vous pouvez le faire en chargant votre page dans une chaîne, puis chargez cette chaîne dans votre webview.
par exemple: p> pris de ici p> p>
Ceci est définitivement une solution, mais fiche.html est un fichier volumineux. Aux fins du maintien du code, je préférerais ne pas refaire la totalité de cette façon.
Malheureusement, je ne pense pas que vous puissiez résoudre ce problème sans convertir votre code HTML dans une chaîne car je ne pense pas qu'il existe un moyen de dire à votre webview de ne mettre à jour que quelques morceaux de HTML à l'intérieur ..
En fait, je ne comprends pas pourquoi la taille du fichier d'enregistrement.html affectera la maintenance du code. Lisez la chaîne HTML (à l'aide de la classe de lecteur Java ou de la part du fichier HTML dans l'actif, utilisez la fonction de remplacement avec RegEx pour remplacer tout [Personnalisé] dans le fichier HTML. Combien de temps le HTML ne doit pas vraiment affecter la manière dont vous maintenez le code. Il devrait plutôt être un problème de performance, ou la chaîne est vraiment vraiment longue qui dépasse la limite de chaîne Java.
Certains code que j'ai utilisés avant: p> utils est mon classe faisant la conversion en chaîne. Je n'utilise pas Regex ici car je ne remplace que le mot pour une fois. Ensuite, je charge la chaîne comme la catas. C'est assez propre que je suppose. P> p>
Je tiens à le faire de cette façon, car il est plus facile d'apporter des modifications à enregistrer.html qu'à un document Java avec 200 lignes de chaîne concaténée. J'ai essayé ce changement et cela semble me donner les informations correctes, mais quand j'appelle webmain.loaddata (détails, "text / html", null); Il donne une erreur non trouvée. La page que la recherche ne trouve pas se trouve être tout le code dans record.html.
Si vous avez une balise pour la chaîne, je pense que vous devrez peut-être utiliser LOADDATAWITHBASEURL
Cela s'est avéré être la clé. Merci!
Je reçois une erreur ne peut pas être résolu code> .. Quelle est la bibliothèque d'utils? @Osmman @rets
Pas une bibliothèque, juste ma classe personnalisée qui contient une méthode de commodité pour convertir un lecteur à une chaîne. Fondamentalement, juste une boucle, Ajoutez Reader.Read () à une chaîne.
Existe-t-il un moyen de supprimer toutes les étiquettes de la chaîne ReReRuedue?
Il s'agit d'une question ancienne et déjà acceptée, mais je suis sûr que le problème peut être résolu de manière plus élégante en utilisant JavaScript.
Gardez le fichier HTML dans votre dossier d'actifs et surrouler le texte que vous souhaitez remplacer. dans avec des éléments div avec des identifiants uniques. p> crée maintenant une fonction JavaScript qui remplacera l'innerhtml d'un div avec un ID P>: P>: P> > WebView helpView = (WebView)findViewById(R.id.helpView);
helpView.getSettings().setJavaScriptEnabled(true);
helpView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:replace('replace1', 'new content 1')");
view.loadUrl("javascript:replace('replace2', 'new content 2')");
}
});
helpView.loadUrl("file:///android_asset/help.html");
Et si mon code html a du texte "{{userername}}} est très bon. {{Userername}} est un programmeur. {{Usergender}} peut développer des super applications aussi" .Je besoin de le remplacer comme - Richard est très bon . Richard est un programmeur. Il peut également développer de superbes applications. Maintenant, dois-je donner 2 identifiants différents pour les deux {{username}} s?
Puis-je donner les mêmes ids aux chaînes similaires / mêmes, car je puisse avoir plusieurs fichiers HTML avec différentes séquences de chaînes et gérer différents identifiants uniques pour les mêmes chaînes seront gênantes.
@DroidWormnarendra Dans ce cas, je suppose que vous utiliseriez la classe au lieu de l'ID.
Celui-ci a fonctionné pour moi, avec le HTML avec le texte et les images.
InputStream is = getAssets().open(html_name); int size = is.available(); byte[] buffer = new byte[size]; is.read(buffer); is.close(); String str = new String(buffer); str = str.replace("InitialTextToBeReplaced", "TextAfterReplacement"); //Now instead of webview.loadURL(""), I needed to do something like - webView.loadDataWithBaseURL("file:///android_asset/", str, "text/html", "UTF-8",null);
Ceci est fonctionné pour moi. Ceci est code Java. P> WebView wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl("file:///android_asset/web1.html");
wb.getSettings().setJavaScriptEnabled(true);
wb.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView web, String url) {
// TODO Auto-generated method stub
String uname = "email@mail.com";
String pass = "******";
web.loadUrl("javascript:(function(){document.getElementById('uname').value = '"+uname+"';})()");
web.loadUrl("javascript:(function(){document.getElementById('pass').value = '"+pass+"';})()");
}
});
Cette ligne contribuera à changer ma langue choisies réfléchie dans Webview de Android .. merci mec
WB.GetSettings (). SetjavasCrriptenabled (True);