2016-02-11 2 views
0

У меня есть активность только с браузером. Каждый раз, когда приложение пытается открыть URL я получаю это исключение:Исключение Null в активности браузера при открытии URL

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.webkit.WebView.loadUrl(java.lang.String)' on a null object reference 

, который относится к этой линии:

mWebView.loadUrl("http://google.com"); 

После комментируя эту линию, активность открывается нормально с другой точки зрения. Вот код, который пытается загрузить веб-страницу:

public class Browser extends AppCompatActivity { 


WebView mWebView; 
/** 
* ATTENTION: This was auto-generated to implement the App Indexing API. 
* See https://g.co/AppIndexing/AndroidStudio for more information. 
*/ 
private GoogleApiClient client; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(layout.activity_browser); 

    mWebView = (WebView) findViewById(R.id.webView); 


     mWebView.loadUrl("http://google.com"); 


    // ATTENTION: This was auto-generated to implement the App Indexing API. 
    // See https://g.co/AppIndexing/AndroidStudio for more information. 
    client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 
} 

Logcat:

java.lang.RuntimeException: Unable to start activity ComponentInfo{karolklimek.mpkdisplay2/karolklimek.mpkdisplay2.Browser}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.webkit.WebView.loadUrl(java.lang.String)' on a null object reference 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
                      at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:135) 
                      at android.app.ActivityThread.main(ActivityThread.java:5221) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:372) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
                      Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.webkit.WebView.loadUrl(java.lang.String)' on a null object reference 
                      at karolklimek.mpkdisplay2.Browser.onCreate(Browser.java:38) 
                      at android.app.Activity.performCreate(Activity.java:5933) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)  
                      at android.app.ActivityThread.access$800(ActivityThread.java:144)  
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)  
                      at android.os.Handler.dispatchMessage(Handler.java:102)  
                      at android.os.Looper.loop(Looper.java:135)  
                      at android.app.ActivityThread.main(ActivityThread.java:5221)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at java.lang.reflect.Method.invoke(Method.java:372)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

И содержание content_browser файла XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="karolklimek.mpkdisplay2.Browser" 
    > 
<WebView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/webView" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" /> 

</RelativeLayout> 
+1

Возможный дубликат [Что такое исключение Null Pointer Exception и как его исправить?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how -do-i-fix-it) – Rami

+0

Пришло ли вам в голову, что 'mWebView' может быть пустым и что вы должны проверить свой идентификатор, импорт и макет? –

ответ

0

У Вас есть ошибка в setContentView(). Вы должны передать целочисленное значение вашего макета из файла R.java. Таким образом, вы должны пройти R.layout.activity_browser вместо layout.activity_browser.

Это должно быть

setContentView(R.layout.activity_browser); 

UPDATE

В коде, вы настраиваете вид контента, чтобы быть activity_browser, но из вашего вопроса, я понимаю, что у вас есть WebView в content_browser.xml файле, и таким образом вы получаете NPE.

Самый простой способ решить эту проблему: переместить webview на ваш activity_browser.xml или сменить setContentView для загрузки content_browser вместо activity_browser.

+0

Спасибо! Я потратил много времени на то, что проблема заключалась в приостановке другого действия, но это было так просто. –

+0

Хахаха ... рад, что это тебе помогло .. :) Счастливое кодирование .. !! – Lal

0

Из кода видно, что макет не загружен из-за того, что объект mWebView не инициализирован, и вы попали в NPE.

Код должен быть setContentView (R.layout.activity_browser); вместо setContentView (layout.activity_browser);

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