Webview lädt HTML aus dem Assets-Verzeichnis

142

Ich versuche, eine HTML-Seite aus dem Assets-Verzeichnis zu laden. Ich habe es versucht, aber es schlägt fehl.

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

Ich bekomme keine wirklich aussagekräftigen Fehler in LogCat ...

AndyD273
quelle
Siehe meine andere Antwort: stackoverflow.com/a/8694428/341091
Martin

Antworten:

295

Sie erhalten die WebView, bevor Sie die Inhaltsansicht so einstellen, dass die wv wahrscheinlich null ist.

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
quelle
Das war's. Ich hatte es zunächst so, habe versucht, es auszutauschen, aber jetzt funktioniert es ... Cool.
AndyD273
Nebenbei bemerkt, ist Weiß auf Schwarz ein Standard-Look in Android? Alle meine Tabellenansichten sind standardmäßig weiß auf schwarz, aber mein HTML ist auf schwarz auf weiß eingestellt ... Ich kann sie ändern, bin mir aber nicht sicher, welche ich ändern soll.
AndyD273
in meiner Website mobilen contactus seite.html Seite enthält eine E - Mail - Adresse ist, ist webview in android app und setURL mit , dass WebUrl contactus HTML - Seite zu öffnen unbekannten URL - Schema Fehler in diesen Benutzer klicken Sie auf E - Mail
Harsha
Wie führe ich HTML FILE mit dem Server in der Android-Anwendung aus?
16

Wann immer Sie eine Aktivität erstellen, müssen Sie setcontentview(Ihr Layout) nach einem Superanruf hinzufügen . Weil Sie setcontentviewXML in Ihre Aktivität einbinden, das ist der Grund, warum Sie es bekommen nullpointerexception.

 setContentView(R.layout.webview);  
 webView = (WebView) findViewById(R.id.webView1);
 wv.loadUrl("file:///android_asset/xyz.html");
Duggu
quelle
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
quelle
2
Andoid doc verweist auf assets developer.android.com/tools/projects/index.html. In beiden Fällen funktioniert es nicht, es sei denn, mein Asset-Ordner befindet sich derzeit im falschen Ordnermain
Pawel Cioch
Mein schlechtes Ich hatte eine Kopie des gleichen Projekts an einem anderen Ort und fügte eine falsche Kopie hinzu, aber diese Antwort mit Bild ist die beste stackoverflow.com/questions/18302603/…
Pawel Cioch
0

Quellcode von hier herunterladen ( HTML-Datei von Assets Android öffnen )

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
quelle