-1

Пишу первую прогу на с помощью WebView в Android Studio. При выполнении вылетает следующая ошибка:

'''

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.smile20, PID: 30909
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.smile20/com.example.smile20.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.webkit.WebSettings android.webkit.WebView.getSettings()' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3534)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3689)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:140)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:100)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2239)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loop(Looper.java:227)
    at android.app.ActivityThread.main(ActivityThread.java:7822)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.webkit.WebSettings android.webkit.WebView.getSettings()' on a null object reference
    at com.example.smile20.MainActivity.onCreate(MainActivity.java:20)
    at android.app.Activity.performCreate(Activity.java:7963)
    at android.app.Activity.performCreate(Activity.java:7952)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3505)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3689) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:140) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:100) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2239) 
    at android.os.Handler.dispatchMessage(Handler.java:107) 
    at android.os.Looper.loop(Looper.java:227) 
    at android.app.ActivityThread.main(ActivityThread.java:7822) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)

'''

Код MainActivity:

'''

    package com.example.smile20;
    import androidx.appcompat.app.AppCompatActivity;
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) { WebView webView = findViewById(R.id.webView); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://thepigeon.org/");

WebViewClient webViewClient = new WebViewClient() {
    @SuppressWarnings("deprecation") @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    @TargetApi(Build.VERSION_CODES.N) @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        view.loadUrl(request.getUrl().toString());
        return true;
    }

};
webView.setWebViewClient(webViewClient);

} }

'''

2 Answers2

2

Вы обращаетесь к WebView до того, как лейаут загружен, соответственно, он равен null. Поставьте setContentView выше получения виджета

lezhni
  • 1,000
  • 5
  • 13
0

У вас указана ошибка

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.webkit.WebSettings android.webkit.WebView.getSettings()' on a null object reference
at com.example.smile20.MainActivity.onCreate(MainActivity.java:20)

Открываете Яндекс, описание ошибки. У вас указана строка, где эта ошибка. Вы пытаетесь прочитать url, строку, которая, судя по всему, пустая

Arty Morris
  • 1,503