首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebViewClient loadData onPageFinished不被呼叫

WebViewClient loadData onPageFinished不被呼叫
EN

Stack Overflow用户
提问于 2020-11-04 21:33:27
回答 1查看 29关注 0票数 1

我正在使用webview加载数据,但是onPageFinished不会被调用,而进程条也不会消失。

代码语言:javascript
复制
public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {

        WebView webViewEcoDetail;
        ProgressBar progressBar;
        //setup Toolbar
        setupToolbar(getActivity(), "MEIN GARTEN", R.drawable.gardify_app_icon_mein_garten, true);

        View root = inflater.inflate(R.layout.fragment_my_garden_eco_detail, container, false);

        webViewEcoDetail = root.findViewById(R.id.web_view_my_garden_eco_detail);
        progressBar = root.findViewById(R.id.progressBar_my_garden_eco_detail);

        Bundle bundle = getArguments();
        String detailFragName = bundle.getString("ECO_DETAIL");
        String html_string = null;
        switch (detailFragName) {
            case "Komposthaufen":
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* html_string = "<html><body><div _ngcontent-ljw-c102=\"\" class=\"col-12 col-md-12\"><h2 _ngcontent-ljw-c102=\"\" class=\"t-13\" style=\"text-decoration: underline;\">Der Komposthaufen</h2><p _ngcontent-ljw-c102=\"\"> Der stille, fleißige Gartenhelfer, der Küchen- und Gartenreste aufnimmt und in wertvollen Humus verwandelt, ist das Symbol für Nachhaltigkeit und Kreislaufwirtschaft im Garten.&nbsp;Damit die Mikroorganismen im Komposthaufen die Metamorphose vom Abfallprodukt zur Nährstoffquelle vollführen können, benötigen sie neben dem richtigen Füllmaterial auch Sauerstoff, Wasser und eine angenehme Temperatur. Um optimale Bedingungen zu schaffen, beachtet folgendes:<br _ngcontent-ljw-c102=\"\"><br _ngcontent-ljw-c102=\"\"><span _ngcontent-ljw-c102=\"\" class=\"t-italic\">Die richtige Standortwahl:</span> Euer Komposthaufen sollte auf natürlichem Untergrund (kein Asphalt oder Beton) und im Schatten oder Halbschatten stehen, sowie mit der Schubkarre gut erreichbar sein. Stellt ihn nicht zu nah an eurem Haus auf. Als Wind- und Sichtschutz dienen Hecken, Sträucher oder Bäume. Geschlossene Wände hingegen eignen sich nicht, da sie die Luftzufuhr zum Komposthaufen verhindern.<br _ngcontent-ljw-c102=\"\"><br _ngcontent-ljw-c102=\"\"><span _ngcontent-ljw-c102=\"\" class=\"t-italic\">Der richtige Behälter:</span> Es gibt verschiedene geeignete Behälter. Allen ist gemein, dass sie wetterfest sind und den Luft- und Wasseraustausch ermöglichen. Wir stellen hier die drei gängigsten Varianten vor. </p><ul _ngcontent-ljw-c102=\"\"><li _ngcontent-ljw-c102=\"\"><span _ngcontent-ljw-c102=\"\" class=\"t-italic\">Der Klassiker</span>:Ein Komposter aus Holzlatten. Benutzt eine witterungsbeständige Holzsorte, wie z.B. Lärche. Ihr braucht ca. 20 Latten (Länge 1 m, Breite 10 cm, Dicke 4 cm) und 4 Kanthölzer (5 x 5 cm) als Eckpfeiler. Eventuell müssen einzelne Latten mit der Zeit ausgetauscht werden, daher sollten sie mit einem Stecksystem verbunden und nicht verschraubt werden. Diverse Bauanleitungen findet ihr im Netz. </li><li _ngcontent-ljw-c102=\"\"><span _ngcontent-ljw-c102=\"\" class=\"t-italic\">Der Drahtige</span>: Ein Drahtgitter-Kompost funktioniert wie ein Lattenkompost, hält aber noch länger.</li><li _ngcontent-ljw-c102=\"\"><span _ngcontent-ljw-c102=\"\" class=\"t-italic\">Miet me</span>: Ebenfalls beliebt ist die Methode der Kompost-Miete. Dabei wird ein Komposthaufen fertig angelegt und mit einer Plane abgedeckt. Er arbeitet dann eine Weile vor sich hin bevor er umgeschichtet wird. </li></ul><p _ngcontent-ljw-c102=\"\"> Im Gegensatz zur Kompost-Miete sollte der Komposthaufen bei den anderen Varianten regelmäßig umgeschichtet werden. Daher lohnt es sich, wenn möglich, zwei Kompostier-Behältnisse gleichzeitig zu besitzen. </p><h2 _ngcontent-ljw-c102=\"\" class=\"t-13 t-italic\">Das richtige Füllmaterial</h2><br _ngcontent-ljw-c102=\"\"><div _ngcontent-ljw-c102=\"\" class=\"table-responsive\"><table _ngcontent-ljw-c102=\"\" class=\"table table-striped\"><thead _ngcontent-ljw-c102=\"\"><tr _ngcontent-ljw-c102=\"\"><th _ngcontent-ljw-c102=\"\" scope=\"col\">Das darf hinein:</th><th _ngcontent-ljw-c102=\"\" scope=\"col\">In geringen Maßen:</th><th _ngcontent-ljw-c102=\"\" scope=\"col\">Das darf nicht hinein:</th></tr></thead><tbody _ngcontent-ljw-c102=\"\"><tr _ngcontent-ljw-c102=\"\"><td _ngcontent-ljw-c102=\"\">Gemüse- und Obstreste und Schalen</td><td _ngcontent-ljw-c102=\"\">Zeitungspapier und Pappe (unbeschichtet, nicht farbig bedruckt)</td><td _ngcontent-ljw-c102=\"\">Gekochtes oder zubereitetes Essen, besonders Fleisch und andere proteinhaltige Lebensmittel</td></tr><tr _ngcontent-ljw-c102=\"\"><td _ngcontent-ljw-c102=\"\">Eierschalen</td><td _ngcontent-ljw-c102=\"\">Federn und Haare</td><td _ngcontent-ljw-c102=\"\">Von Pilz befallene Pflanzenreste</td></tr><tr _ngcontent-ljw-c102=\"\"><td _ngcontent-ljw-c102=\"\">Kaffeesatz</td><td _ngcontent-ljw-c102=\"\">Wildkräuter (ohne Samen)</td><td _ngcontent-ljw-c102=\"\">behandeltes Holz / beschichtetes Papier</td></tr><tr _ngcontent-ljw-c102=\"\"><td _ngcontent-ljw-c102=\"\">Getrockneter Rasenschnitt</td><td _ngcontent-ljw-c102=\"\">Frischer Rasenschnitt</td><td _ngcontent-ljw-c102=\"\">mineralische Abfälle</td></tr><tr _ngcontent-ljw-c102=\"\"><td _ngcontent-ljw-c102=\"\">Laub (vorsicht bei Kastanien-, Walnuss- und Eichenlaub)</td><td _ngcontent-ljw-c102=\"\">Holzstreu, Sägespäne (nur ganz geringe Mengen)</td><td _ngcontent-ljw-c102=\"\">Holzasche: Bäume nehmen Schadstoffe auf, die beim Verbrennen in der Asche zurückbleibt</td></tr><tr _ngcontent-ljw-c102=\"\"><td _ngcontent-ljw-c102=\"\">Alte Erde</td><td _ngcontent-ljw-c102=\"\">Algen (aus dem Gartenteich)</td><td _ngcontent-ljw-c102=\"\">Pflanzen mit Schädlingsbefall</td></tr><tr _ngcontent-ljw-c102=\"\"><td _ngcontent-ljw-c102=\"\">Gründschnitt von Stauden und Gehölzen</td><td _ngcontent-ljw-c102=\"\">Zitrusfrüchte</td><td _ngcontent-ljw-c102=\"\">Metall, Leder</td></tr><tr _ngcontent-ljw-c102=\"\"><td _ngcontent-ljw-c102=\"\">Blumen-, Balkon- und Zimmerpflanzen</td><td _ngcontent-ljw-c102=\"\"></td><td _ngcontent-ljw-c102=\"\">Zitrusfruchtschalten (sind oft gespritzt)</td></tr></tbody></table></div><p _ngcontent-ljw-c102=\"\"> Achtet außerdem darauf, dass das eingebrachte Material feucht aber nicht nass ist und es großflächig aufgebracht wird. Eine Diversität im Material lohnt ebenfalls: Berücksichtigt das Kohlenstoff-Stickstoff- Verhältnis, sprich das von holzigem und frischem Material. Grobes Material liegt unten, feineres Material wird gemischt darauf verteilt. Eine Abdeckplane fördert die Wärmeentwicklung (das ist vor allem im Winter wegen der Kälte wichtig) und verhindert gleichzeitig Feuchtigkeitsverlust. Zur Abdeckung eignen sich Stroh- oder Schilfmatten, sowie atmungsaktives Kompostschutzvlies. Folien sollten nur kurzfristig und bei starkem Regen zum Einsatz kommen: Sie verhindern, dass Nährstoffe hinausgespült werden, sind aber gleichzeitig luftdicht. Durch die fehlende Sauerstoffzufuhr, können die Abfälle zu faulen beginnen. </p><h2 _ngcontent-ljw-c102=\"\" class=\"t-13 t-italic\">Gut zu wissen.</h2><p _ngcontent-ljw-c102=\"\"> Das „torf“ doch nicht wahr sein: Auch wenn Torf aus Hochmooren wegen seines Säuregrads und seiner Fähigkeit Wasser gut zu binden, gerne benutzt wird, schadet sein Einsatz der Umwelt – und zwar gleich doppelt. Sein Abbau zerstört die jahrhundert- bis jahrtausendalten Moore und mit ihm den Lebensraum zahlreicher Pflanzen und Tiere. Außerdem schadet der Torfabbau dem Klima, denn bei der Entwässerung der Moore entweicht CO2. Es ist deshalb besonders nachhaltig, wenn Gärtner möglichst viel mit ihrer selbst hergestellten Komposterde arbeiten und auf torfhaltige Blumenerde möglichst verzichten.<br _ngcontent-ljw-c102=\"\"><br _ngcontent-ljw-c102=\"\"> Umfassende Informationen findet ihr außerdem in der Kompostfibel des Umweltbundesamt:<br _ngcontent-ljw-c102=\"\"><br _ngcontent-ljw-c102=\"\"><a _ngcontent-ljw-c102=\"\" href=\"https://www.umweltbundesamt.de/sites/default/files/medien/376/publikationen/151207_stg_uba_kompostfibel_web.pdf\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"word-wrap: break-word;\"> https://www.umweltbundesamt.de/sites/default/files/medien/376/publikationen/151207_stg_uba_kompostfibel_web.pdf</a></p><div _ngcontent-ljw-c102=\"\" class=\"row\"><div _ngcontent-ljw-c102=\"\" class=\"col-md-12 mt-4 text-center\"><img _ngcontent-ljw-c102=\"\" src=\"./assets/images/kompost1.jpg\" style=\"width: 100%;\"></div><div _ngcontent-ljw-c102=\"\" class=\"col-md-12 mt-4 text-center\"><img _ngcontent-ljw-c102=\"\" src=\"./assets/images/kompost2.jpg\" style=\"width: 100%;\"></div></div></div></body><div _ngcontent-ljw-c102=\"\" class=\"row\"><div _ngcontent-ljw-c102=\"\" class=\"col-md-12 mt-4 text-center\"><img _ngcontent-ljw-c102=\"\" src=\"https://gardify.de//assets/images/kompost1.jpg\" style=\"width: 100%;\"></div><div _ngcontent-ljw-c102=\"\" class=\"col-md-12 mt-4 text-center\"><br><img _ngcontent-ljw-c102=\"\" src=\"https://gardify.de/assets/images/kompost2.jpg\" style=\"width: 100%;\"></div></div></html>";
*/
                break;
        }

        AppWebViewClients webViewClients = new AppWebViewClients(progressBar);
        webViewClients.shouldOverrideUrlLoading(webViewEcoDetail,html_string);
        return root;
    }

    public class AppWebViewClients extends WebViewClient {
        private ProgressBar progressBarEco;
        public AppWebViewClients(ProgressBar progressBar) {
            this.progressBarEco=progressBar;
            progressBarEco.setVisibility(View.VISIBLE);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String htmlString) {
            view.loadData(htmlString, "text/html", "UTF-8");
            return true;
        }
        
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            progressBarEco.setVisibility(View.GONE);
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-04 21:38:24

尝试使用loadDataWithBaseURL而不是loadData

代码语言:javascript
复制
view.loadDataWithBaseURL(null, htmlString, "text/html", "UTF-8",null); 

而不是

代码语言:javascript
复制
view.loadData(htmlString, "text/html", "UTF-8");

更新

你需要添加

代码语言:javascript
复制
webViewEcoDetail.setWebViewClient(webViewClients);

也叫

代码语言:javascript
复制
webViewEcoDetail.loadUrl(html_string);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64688041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档