Tampilan web memuat html dari direktori aset

142

Saya mencoba memuat halaman html dari direktori aset. Saya mencoba ini, tetapi gagal.

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

Saya tidak benar-benar mendapatkan kesalahan dalam LogCat ...

AndyD273
sumber
Lihat jawaban saya yang lain: stackoverflow.com/a/8694428/341091
Martin

Jawaban:

296

Anda mendapatkan WebView sebelum mengatur tampilan Konten sehingga wv mungkin nol.

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
sumber
Itu dia. Awalnya saya punya cara itu, mencoba menukarnya, tapi sekarang berhasil ... Keren.
AndyD273
Di samping catatan, apakah putih pada hitam tampilan standar di Android? Semua tampilan tabel saya putih di atas hitam secara default, tetapi html saya diatur ke hitam di atas putih ... Saya bisa mengubahnya, tetapi tidak yakin yang mana harus diubah.
AndyD273
di situs web saya mobile contactus page.html halaman berisi satu alamat email yang ada, saya menggunakan tampilan web di aplikasi android dan seturl untuk membuka halaman weburl contactus .html di pengguna yang mengklik email yang tidak diketahui kesalahan skema url
Harsha
Bagaimana menjalankan FILE HTML menggunakan server di aplikasi android?
16

Setiap kali Anda membuat aktivitas, Anda harus menambahkan setcontentview(tata letak Anda) setelah panggilan super. Karena setcontentviewmengikat xml ke dalam aktivitas Anda sehingga itulah alasan Anda mendapatkannya nullpointerexception.

 setContentView(R.layout.webview);  
 webView = (WebView) findViewById(R.id.webView1);
 wv.loadUrl("file:///android_asset/xyz.html");
Duggu
sumber
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
sumber
2
Dokumen Andoid merujuk ke assets developer.android.com/tools/projects/index.html dalam kedua kasus tersebut tidak berfungsi, kecuali folder aset saya salah folder saat ini dimain
Pawel Cioch
Buruk saya, saya memiliki salinan proyek yang sama di lokasi yang berbeda, dan menambah salinan yang salah, tetapi jawaban dengan gambar ini adalah yang terbaik stackoverflow.com/questions/18302603/…
Pawel Cioch
0

Unduh kode sumber dari sini ( Buka file html dari aset 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
sumber