โหลด Webview html จากไดเรกทอรีสินทรัพย์


142

ฉันกำลังพยายามโหลดหน้า html จากไดเรกทอรีสินทรัพย์ ฉันลองสิ่งนี้ แต่มันล้มเหลว

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

ฉันไม่ได้รับแจ้งข้อผิดพลาดใด ๆ ใน LogCat ...


ดูคำตอบอื่น ๆ ของฉัน: stackoverflow.com/a/8694428/341091
Martin

คำตอบ:


296

คุณได้รับ WebView ก่อนที่จะตั้งค่ามุมมองเนื้อหาดังนั้น wv น่าจะเป็นโมฆะ

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

นั่นมัน ฉันมีวิธีเริ่มต้นด้วยพยายามเปลี่ยนมัน แต่ตอนนี้มันใช้งานได้ ... เจ๋ง
AndyD273

ในหมายเหตุด้านข้างสีขาวบนพื้นดำเป็นรูปลักษณ์มาตรฐานใน Android หรือไม่ การดูตารางของฉันทั้งหมดเป็นสีขาวดำโดยค่าเริ่มต้น แต่ html ของฉันถูกตั้งค่าเป็นขาวดำ ... ฉันสามารถเปลี่ยนได้ แต่ไม่แน่ใจว่าจะเปลี่ยนอันไหน
AndyD273

ในเว็บไซต์ของฉันหน้า contactus มือถือหน้า HTML มีที่อยู่อีเมลหนึ่งอยู่กำลังใช้ webview ในแอป android และ seturl เพื่อเปิดหน้าเว็บ contactus .html หน้าผู้ใช้นั้นคลิกข้อผิดพลาด url schema อีเมลที่ไม่รู้จัก
Harsha

วิธีการเรียกใช้ไฟล์ HTML โดยใช้เซิร์ฟเวอร์ในแอปพลิเคชัน Android

16

เมื่อใดก็ตามที่คุณกำลังสร้างกิจกรรมคุณต้องเพิ่มsetcontentview(รูปแบบของคุณ) หลังจากโทรสุด เพราะsetcontentviewXML 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
Andoid doc อ้างถึง assets developer.android.com/tools/projects/index.htmlในทั้งสองกรณีใช้งานไม่ได้เว้นแต่โฟลเดอร์ทรัพย์สินของฉันอยู่ในโฟลเดอร์ที่ไม่ถูกต้องในปัจจุบันmain
Pawel Cioch

ฉันไม่ดีฉันมีสำเนาของโครงการเดียวกันในสถานที่ที่แตกต่างกันและถูกเพิ่มเพื่อคัดลอกผิด แต่คำตอบนี้มีภาพที่ดีที่สุดคือstackoverflow.com/questions/18302603/...
Pawel Cioch

0

ดาวน์โหลดซอร์สโค้ดได้จากที่นี่ ( เปิดไฟล์ html จาก android 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();
 }
 }
 });
 }
 }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.