Es lädt die Site, aber nur, wenn sie nicht im Action Listener enthalten ist. Selbst wenn ich die URL ganz unten in die onCreate-Methode lade, funktioniert sie. Ich habe bereits geprüft, ob die Webansicht unsichtbar ist, der Button Listener funktioniert auch.

Das Problem begann nach einigen Stunden des Codierens anderer Dinge

WebView wbvCheckURL;
Button btnSearch;

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

        wbvCheckURL = findViewById(R.id.wbvCheckURL);
        btnSearch = findViewById(R.id.btnSearch);
        
        wbvCheckURL.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                ...
            }

            @Override
            public void onReceivedTitle(WebView view, String title) {
                ...
            }
        });
        wbvCheckURL.getSettings().setJavaScriptEnabled(true);
        wbvCheckURL.setWebViewClient(new WebViewClient());
        
        // When i do it like this it works:
        // wbvCheckURL.loadUrl("http://www.google.de");

        btnSearch.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                wbvCheckURL.loadUrl("http://www.google.de");

                hideKeyboard(v);
                LoadCode();
            }
        });
    }
0
SaweyHD 16 Aug. 2020 im 18:09

2 Antworten

Beste Antwort

Die Lösung besteht darin, es in einen Thread zu laden

Instanz erstellen und Thread starten:

LoadURL  t = new LoadURL();
t.start();

Thread-Klasse:

class LoadURL extends Thread {
public void run() {
    Classname.wbvCheckURL.post(new Runnable() {
           public void run() {
               Classname.wbvCheckURL.loadUrl("http://www.google.de");
           }
    });
}
0
SaweyHD 16 Aug. 2020 im 17:23

Du kannst es mit meinem versuchen. Meins ist eine andere Art von Webansicht mit Schubladenlayout. Ich hoffe, Sie haben eine Idee, wie Sie die Webansicht einfügen können.

package com.example.appname;

import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageButton;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.ShareActionProvider;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.MenuItemCompat;

public class Provokinc extends AppCompatActivity {

    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_provokinc);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        webView = findViewById(R.id.webView);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("https://stackoverflow.com/questions/63438455/android-webview-doesnt-load-the-url-from-button-listener");

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        ImageButton ImageButton = (ImageButton) findViewById(R.id.imageButtonA);
        ImageButton ImageButton1 = (ImageButton) findViewById(R.id.imageButtonB);
        ImageButton ImageButton2 = (ImageButton) findViewById(R.id.imageButtonC);
        ImageButton ImageButton3 = (ImageButton) findViewById(R.id.imageButtonD);
        ImageButton ImageButton4 = (ImageButton) findViewById(R.id.imageButtonE);


        ImageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent int1 = new Intent(Provokinc.this,Main3Activity.class);
                startActivity(int1);
            }
        });

        ImageButton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent int2 = new Intent(Provokinc.this, Main2Activity.class);
                startActivity(int2);
            }
        });

        ImageButton2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent int3 = new Intent(Provokinc.this, Provokinc.class);
                startActivity(int3);
            }
        });

        ImageButton3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent int4 = new Intent(Provokinc.this, ActivityItemDetails.class);
                startActivity(int4);
            }
        });

        ImageButton4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent int5 = new Intent(Provokinc.this, MainActivity.class);
                startActivity(int5);
            }
        });
    }


    @Override
    public void onBackPressed(){
        if(webView.canGoBack()){
            webView.goBack();
        }                 else{
            super.onBackPressed();
        }
    }


}
0
Charmaine Yeap 16 Aug. 2020 im 17:50