Webview carica html dalla directory delle risorse


142

Sto cercando di caricare una pagina html dalla directory delle risorse. Ho provato questo, ma non ci riesce.

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);  
    }  
}

In LogCat non riscontro davvero errori di lettura ...


Vedi la mia altra risposta: stackoverflow.com/a/8694428/341091
Martin

Risposte:


296

Stai ottenendo WebView prima di impostare la vista Contenuto, quindi probabilmente il wv è nullo.

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
        }  
    }

Questo è stato. L'ho fatto in questo modo per cominciare, ho provato a scambiarlo, ma ora funziona ... Fantastico.
AndyD273,

Per contro, il bianco su nero è un aspetto standard in Android? Tutte le viste della mia tabella sono bianche su nero per impostazione predefinita, ma il mio HTML è impostato su nero su bianco ... Posso cambiarle, ma non sono sicuro di quale cambiare.
AndyD273,

nel mio sito Web mobile contactus page.html pagina contiene un indirizzo e-mail è lì, sto usando webview in app Android e seturl per aprire quella pagina weburl contactus .html in quell'utente fare clic su e-mail sconosciuta errore url schema schema
Harsha

Come eseguire HTML FILE utilizzando il server nell'applicazione Android?

16

Ogni volta che stai creando attività, devi aggiungere setcontentview(il tuo layout) dopo la super chiamata. Perché setcontentviewassociare xml alla tua attività, quindi questo è il motivo che stai ricevendo nullpointerexception.

 setContentView(R.layout.webview);  
 webView = (WebView) findViewById(R.id.webView1);
 wv.loadUrl("file:///android_asset/xyz.html");

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

2
Il documento Andoid si riferisce a assets developer.android.com/tools/projects/index.html in entrambi i casi non funziona, a meno che la cartella delle mie risorse non si trovi nella cartella errata attualmente inmain
Pawel Cioch

Il mio male avevo una copia dello stesso progetto in posizione differente, e aggiungevo alla copia di sbagliato, ma questa risposta con l'immagine è il migliore stackoverflow.com/questions/18302603/...
Pawel Cioch

0

Scarica il codice sorgente da qui ( Apri il file html dalle risorse 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();
 }
 }
 });
 }
 }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.