2009-12-30 4 views
5

Я сегодня бил головой о стену, пытаясь заставить WebView работать. Ниже приведен код основного типа:Почему Android 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. Если я использую WebView и пытаюсь получить доступ к www.google.com, тогда он отлично работает. Если я пытаюсь получить доступ к любому другому сайту, тогда он не включается, включая loadData, и он просто отображает черный экран в эмуляторе. В конце я хотел бы прочитать из локального файла.

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

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

+0

Это для последних SDK и API Google :) – Biz

+0

Вы пытались комментировать вызов setJavaScriptEnabled? – CaseyB

+0

Что говорит 'adb logcat', когда появляется черный экран? –

ответ

0

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

Here are a few projects демонстрирует простые использования WebView, одной из моих книг.

7

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

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

до

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

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

Он должен выглядеть следующим образом:

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

У меня была такая же проблема, как и у плаката, это исправило это для меня. Спасибо, Тайлер! –

+1

Вы хотите сказать, что параметры макета оказывают какое-либо влияние на то, что URL-адреса могут загружаться или нет? –

+0

Согласно: [ViewGroup.LayoutParams FILL_PARENT] (http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html#FILL_PARENT) Это значение является устаревшим, начиная с уровня API 8 и заменен по MATCH_PARENT –

0

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

Смежные вопросы