Webview charge le HTML à partir du répertoire des ressources

142

J'essaie de charger une page html à partir du répertoire des actifs. J'ai essayé cela, mais cela échoue.

public class ViewWeb extends Activity {  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        WebView wv;  
        wv = (WebView) findViewById(R.id.webView1);  
        wv.loadUrl("file:///android_asset/aboutcertified.html");   // fails here
        setContentView(R.layout.webview);  
    }  
}

Je n'ai pas vraiment d'erreurs révélatrices dans LogCat ...

AndyD273
la source
Voir mon autre réponse: stackoverflow.com/a/8694428/341091
Martin

Réponses:

296

Vous obtenez la WebView avant de définir la vue Contenu, donc le wv est probablement nul.

public class ViewWeb extends Activity {  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);
            setContentView(R.layout.webview);  
            WebView wv;  
            wv = (WebView) findViewById(R.id.webView1);  
            wv.loadUrl("file:///android_asset/aboutcertified.html");   // now it will not fail here
        }  
    }
Robby Pond
la source
C'était ça. Je l'ai eu comme ça au départ, j'ai essayé de l'échanger, mais maintenant ça marche ... Cool.
AndyD273
Par ailleurs, le blanc sur noir est-il un look standard sous Android? Toutes mes vues de table sont blanc sur noir par défaut, mais mon html est réglé sur noir sur blanc ... Je peux les changer, mais je ne sais pas laquelle changer.
AndyD273
dans mon site Web, la page de contactus mobile contient une adresse e-mail, j'utilise webview dans l'application Android et seturl pour ouvrir cette page Weburl contactus .html dans cet utilisateur, cliquez sur une erreur de schéma d'url inconnue par e-mail
Harsha
Comment exécuter un fichier HTML en utilisant le serveur dans l'application Android?
16

Chaque fois que vous créez une activité, vous devez ajouter setcontentview(votre mise en page) après un super appel. Parce que setcontentviewliez xml à votre activité, c'est la raison pour laquelle vous obtenez nullpointerexception.

 setContentView(R.layout.webview);  
 webView = (WebView) findViewById(R.id.webView1);
 wv.loadUrl("file:///android_asset/xyz.html");
duggu
la source
6
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView wb = new WebView(this);
        wb.loadUrl("file:///android_asset/index.html");
        setContentView(wb);
    }


keep your .html in `asset` folder
BIJU KV
la source
2
Andoid doc se réfère à assets developer.android.com/tools/projects/index.html dans les deux cas ne fonctionne pas, à moins que mon (mes) dossier (s) ne se trouve actuellement dans le mauvais dossiermain
Pawel Cioch
Mon mauvais j'avais une copie du même projet dans un emplacement différent, et ajoutais à une mauvaise copie, mais cette réponse avec l'image est la meilleure stackoverflow.com/questions/18302603/...
Pawel Cioch
0

Téléchargez le code source à partir d'ici ( Ouvrez le fichier html à partir d'actifs Android )

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:background="#FFFFFF"
 android:layout_height="match_parent">

<WebView
 android:layout_width="match_parent"
 android:id="@+id/webview"
 android:layout_height="match_parent"
 android:layout_margin="10dp"></WebView>
</RelativeLayout>

MainActivity.java

package com.deepshikha.htmlfromassets;
 import android.app.ProgressDialog;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

WebView webview;
 ProgressDialog progressDialog;

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

private void init(){
 webview = (WebView)findViewById(R.id.webview);
 webview.loadUrl("file:///android_asset/download.html");
 webview.requestFocus();

progressDialog = new ProgressDialog(MainActivity.this);
 progressDialog.setMessage("Loading");
 progressDialog.setCancelable(false);
 progressDialog.show();

webview.setWebViewClient(new WebViewClient() {

public void onPageFinished(WebView view, String url) {
 try {
 progressDialog.dismiss();
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
 });
 }
 }
Deepshikha Puri
la source