Webview tải html từ thư mục tài sản


142

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

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 thực sự không nhận được bất kỳ lỗi nói nào trong LogCat ...


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

Câu trả lời:


295

Bạn đang nhận được WebView trước khi thiết lập chế độ xem Nội dung để wv có thể 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
        }  
    }

Điều đó là vậy đó. Tôi đã có nó theo cách đó để bắt đầu, đã thử trao đổi nó, nhưng bây giờ nó hoạt động ... Tuyệt.
AndyD273

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

trong trang web của tôi trang di động contactus page.html chứa một địa chỉ email là có, đang sử dụng webview trong ứng dụng android và seturl để mở mà đường dẫn web contactus .html trang trong đó người dùng nhấp chuột vào lỗi email schema biết url
Harsha

Làm cách nào để chạy HTML FILE bằng máy chủ trong ứng dụng Android?

16

Bất cứ khi nào bạn đang 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. Vì setcontentviewliên kết 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");

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
Tài liệu Andoid đề cập đến assets developer.android.com/tools/projects/index.html trong cả hai trường hợp không hoạt động, trừ khi thư mục tài sản của tôi hiện đang ở trong thư mục sai trongmain
Pawel Cioch

Thật tệ là tôi đã có một bản sao của cùng một dự án ở vị trí khác nhau và đã thêm vào bản sao sai, nhưng câu trả lời với hình ảnh này là stackoverflow.com/questions/18302603/
Lỗi

0

Tải xuống mã nguồn từ đây ( Mở tệp html từ tài sản 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();
 }
 }
 });
 }
 }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.