Почему Android WebView отображает черный экран?

Сегодня днем ​​я бился головой о стену, пытаясь заставить WebView работать. Ниже приведен код в основном классе:

public class fkyougoogle extends Activity {
    /** Called when the activity is first created. */
 WebView webview;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        webview = (WebView) findViewById(R.id.webview);
        webview.getSettings().setJavaScriptEnabled(true);
        // WORKS
        //webview.loadUrl("http://www.google.com");
        // DOESN'T WORK
        //webview.loadUrl("http://www.theregister.co.uk");
        //webview.loadData("<html><body>hello</body></html>", "text/html", "utf-8");
        //webview.loadDataWithBaseURL("fake://", "<html><body>hello</body></html>", "text/html", "utf-8", "http://www.theregister.co.uk/");

    }
}

Это пример Google «Hello, Webview». Если я использую WebView и пытаюсь получить доступ к www.google.com, то все работает нормально. Если я попытаюсь получить доступ к любому другому сайту, мне не удастся включить loadData, и в эмуляторе просто отобразится черный экран. В конце концов, я хотел бы прочитать из локального файла.

включен в тег манифеста, а схема XML такая же, как в примере Hello Webview.

Я пропустил что-то очевидное здесь? :(


person Biz    schedule 30.12.2009    source источник
comment
Это для последних SDK и API Google :)   -  person Biz    schedule 30.12.2009
comment
Вы пытались закомментировать вызов setJavaScriptEnabled?   -  person CaseyB    schedule 30.12.2009
comment
Что говорит adb logcat, когда появляется черный экран?   -  person Roman Nurik    schedule 30.12.2009


Ответы (3)


Попробуйте изменить

android:layout_width="wrap_content"
android:layout_height="wrap_content"

to

android:layout_width="fill_parent"
android:layout_height="fill_parent"

в вашем LinearLayout верхнего уровня main.xml

Это должно выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <WebView 
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />

</LinearLayout>
person Tyler    schedule 02.01.2010
comment
У меня была та же проблема, что и на плакате, это исправило ее для меня. Спасибо Тайлер! - person Carlos Rendon; 11.01.2010
comment
Вы хотите сказать, что параметры макета имеют какое-либо влияние на то, какие URL-адреса может загружать веб-просмотр или нет? - person Mathias Conradt; 23.10.2010
comment
Согласно: ViewGroup.LayoutParams FILL_PARENT Это значение устарело, начиная с уровня API 8, и заменено на MATCH_PARENT - person Yuriy Chernyshov; 05.02.2014

Попробуйте UTF-8 вместо utf-8 для последних двух попыток. У меня нет проблем с загрузкой http://www.theregister.co.uk с использованием того же кода -- попробуйте загрузить его во встроенном приложении браузера, и если это не удастся, возможно, вы столкнулись с какой-то проблемой брандмауэра/прокси.

Вот несколько проектов, демонстрирующих простое использование WebView, начиная с одного моих книг.

person CommonsWare    schedule 30.12.2009

У меня была аналогичная проблема с полностью пустым WebView, но в моем случае это было вызвано отсутствием разрешения на использование android.permission.INTERNET.

person Y2i    schedule 10.05.2012