2010-06-30 60 views
115

Tôi đang cố tải một trang html từ thư mục nội dung. Tôi đã thử điều này, nhưng nó không thành công.Tải trang web html từ thư mục nội dung

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

tôi không thực sự có được bất kỳ lỗi nào kể trong LogCat ...

+0

Xem câu trả lời khác của tôi: http://stackoverflow.com/a/8694428/341091 – Martin

Trả lời

242

Bạn đang nhận được WebView trước khi thiết lập xem nội dung vì vậy các wv có lẽ là null.

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

Đó là nó. Tôi đã có nó theo cách đó để bắt đầu với, cố gắng trao đổi nó, nhưng bây giờ nó hoạt động ... Cool. – AndyD273

+0

Một lưu ý phụ là màu trắng trên nền đen là giao diện chuẩn trong Android? Tất cả các chế độ xem bảng của tôi có màu trắng đen theo mặc định, nhưng html của tôi được đặt cho màu đen trắng ... Tôi có thể thay đổi chúng, nhưng không chắc chắn cái nào cần thay đổi. – AndyD273

+10

Điều này dường như không hoạt động nữa với honeycomp. Damm. – Martin

11

Bất cứ khi nào bạn tạo hoạt động, bạn phải thêm setcontentview (bố cục của bạn) sau siêu cuộc gọi. Bởi vì setcontentview ràng buộc xml vào hoạt động của bạn nên đó là lý do bạn nhận được nullpointerexception.

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

Điều này gần giống với câu trả lời được chấp nhận – Matt

+1

Andoid doc đề cập đến 'asset' https://developer.android.com/tools/projects/index.html trong cả hai trường hợp không hoạt động, trừ khi thư mục nội dung của tôi nằm trong thư mục sai hiện tại trong 'main' –

+0

Tôi không có bản sao của cùng một dự án ở vị trí khác, và đã thêm vào bản sao sai, nhưng câu trả lời này với hình ảnh là http://stackoverflow.com/questions/18302603/where- tốt nhất to-place-asset-thư mục-trong-android-studio –

-1

Tải về mã nguồn từ đây (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(); 
} 
} 
}); 
} 
} 
Các vấn đề liên quan