Problem z WebView Android

Problem z WebView Android

Wątek przeniesiony 2022-01-22 23:39 z Java przez cerrato.

FB
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 2 lata
  • Postów:25
0

Hej,
Prośba o pomoc. Dlaczego podkreśla mi webview na czerowno w 8, 9 i 11 linii. Dodałem do do mainfestu. Z góry dziękuje za pomoc.

Kopiuj

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)


        setContentView(R.layout.activity_main)
        findViewById<Button>(R.id.sendRequest).setOnClickListener { sendRequest() }

        webview.webChromeClient = WebChromeClient()
        webview.settings.javaScriptEnabled = true

        webview.webViewClient = object : WebViewClient() {
            override fun onReceivedSslError(
                view: WebView?,
                handler: SslErrorHandler,
                er: SslError?
            ) {
                handler.proceed()
                // Ignore SSL certificate errors
            }
        }
    }
Kopiuj

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

edytowany 1x, ostatnio: fajny_bolek
H1
  • Rejestracja:prawie 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:8
0

A nie brak tutaj takiej wesołej linijki?: val myWebView: WebView = findViewById(R.id.webview)

FB
dodałem teraz, ale nic to nie zmieniło. webview w tej linii w nawiasie się też zaświecił na czerwono
FB
chyba, ze w złej linii to wpisuje. Wpisałem w 4 linii
H1
Spróbuj to wpisać niżej 5 linii, lecz wyżej 8
FB
wpisalem w 7 i jest tak samo
AA
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 2 lata
  • Postów:14
0

Najedź kursorem w Android Studio i tam powinien się błąd wyświetlić. Albo zrób screnshota tego albo przepisz tutaj / do google.

Jeszcze możesz uruchomić program i kompilator będzie płakał w okienku Build. Możesz przekleić treść błędu

edytowany 1x, ostatnio: AsAs
FB
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 2 lata
  • Postów:25
0
Kopiuj
AAPT: error: unexpected element <WebView> found in <manifest>.

screenshot-20220123193607.png

AA
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 2 lata
  • Postów:14
0

To są 2 błędy.

  1. <WebView> nie powinno być w manifeście. Powinno być w layoutcie activity_main .xml
  2. żeby mieć dostęp do tak zadeklraowanego webview i mieć możliwość go używać w taki sposób webview.webChromeClient musisz go najpierw pobrać
    np. w taki sposób:
Kopiuj
val myWebView: WebView = findViewById(R.id.webview)

webview.webChromeClient = WebChromeClient()
webview.settings.javaScriptEnabled = true
FB
wrzuciłem <WebView> do activity_main.xml, dodałem val myWebView: WebView = findViewById(R.id.webview), ale nadal mam błąd: Unresolved reference: webview w linii 8,9, i 11
FB
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 2 lata
  • Postów:25
0

Taki mam aktualnie kod:

Kopiuj
   override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)
        findViewById<Button>(R.id.sendRequest).setOnClickListener { sendRequest() }

        val myWebView: WebView = findViewById(R.id.webview)

        webview.webChromeClient = WebChromeClient()
        webview.settings.javaScriptEnabled = true

        webview.webViewClient = object : WebViewClient() {
            override fun onReceivedSslError(
                view: WebView?,
                handler: SslErrorHandler,
                er: SslError?
            ) {
                handler.proceed()
                // Ignore SSL certificate errors
            }
        }
    }

Dostaję poniższy błąd w liniach 9,10 i 12

Kopiuj
Unresolved reference: webview
.andy
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 3 lata
  • Postów:1524
1

@fajny_bolek:

Kopiuj
webview.webChromeClient = WebChromeClient()
        webview.settings.javaScriptEnabled = true
[...]
webview.webViewClient = object : WebViewClient() {

Tu nie powinieneś się odwoływać do myWebView?

(Nie znam się na Kotlinie)


Software is like sex: it's better when it's free.
- Linus Torvalds
H1
  • Rejestracja:prawie 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:8
0

@fajny_bolek: No offense chłopie, ale Ty wiesz czym są obiekty, referencje, klasy i inne czary? Przypomnij to sobie, bo z tego co na razie widzę, to poruszasz się po omacku.

AA
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 2 lata
  • Postów:14
3

@fajny_bolek: brakuje Ci podstaw. Przeczytaj o Kotlinie.
Deklarujesz stałą o nazwie myWebView a za chwilę się chcesz odwołać poprzez webview która nie istnieje.
Jeżeli w layoucie masz widok który ma id webview to nie znaczy że obiekt zwrócony przez findViewById też będzie miał taką nazwę (może mieć)
W Twoim przypadku to:
val myWebView: WebView = findViewById(R.id.webview)
oznacza że

  • stała val referencja o nazwie myWebView
  • typ obiektu to WebView
  • do referencji val myWebView: przypisujesz to co zwróci findViewById
  • w laycie xml szukasz obiektu który MUSI mieć zadeklarowane android:id w tym przypadku jest to android:id="+@id/webview"

Podstawy

edytowany 1x, ostatnio: AsAs

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.