2010-06-30 11 views
115

Öğeler dizininden bir html sayfası yüklemeye çalışıyorum. Bunu denedim, ama başarısız oluyor.Varlık dizinindeki Webview yükleme html

Gerçekten LogCat herhangi söylüyorum hataları alamadım
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); 
    } 
} 

...

+0

Diğer yanıtıma bakın: http://stackoverflow.com/a/8694428/341091 – Martin

cevap

242

Sen wv muhtemelen null İçeriğin görünümü ayarlamadan önce WebView'ı alıyorsanız. etkinlik oluşturulurken her

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

Öyleydi. Başlamak için böyle bir yol vardı, değiştirmeyi denedim, ama şimdi işe yarıyor ... Cool. – AndyD273

+0

Bir yan notta, siyah beyaz beyaz Android'de standart bir görünüm mü? Tüm tablo görünümlerim varsayılan olarak siyah beyazdır, ancak html'm siyah beyaz için ayarlanmıştır ... Onları değiştirebilirim, ancak hangisinin değişeceğinden emin değilim. – AndyD273

+10

Bu, honeycomp ile artık çalışmıyor gibi görünüyor. Damm. – Martin

11

, süper çağrısından sonra setcontentview (düzeninizi) eklemelisiniz. setcontentview, etkinliğinize xml bağladığından, nullpointerexception'u almanızın nedeni budur.

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


keep your .html in `asset` folder 
+4

Bu, kabul edilen answer – Matt

+1

ile hemen hemen aynıdır. Veoid doc, varlıklarım klasörde olmadığı sürece her iki durumda da "varlıklar" https://developer.android.com/tools/projects/index.html ifadesini kullanır. 'main' şu anda yanlış klasör –

+0

Benim kötü Ben farklı bir yerde aynı proje bir kopyasını vardı ve yanlış kopyaya ekliyordu, ancak bu görüntü ile en iyi cevap http://stackoverflow.com/questions/18302603/where- için yerinde-varlıklar klasör-in-android-studio –

-1

İndir kaynak kodu buradan (Open html file from assets 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(); 
} 
} 
}); 
} 
}