невозможно установить местоположение веб-просмотра 2 раза с помощью loadUrl [EDIT] [решено] - PullRequest
0 голосов
/ 05 октября 2019

Я не могу изменить местоположение веб-просмотра в коде Java.

Я уже пробовал следующее решение: webView.reload (), повторить webView.setWebChromeClient (newWebChromeClient ()), webView.loadUrl ("about: blank")

Основной принцип:

веб-просмотр инициализируется в основном классе -> пользователь запускает функцию js -> которая запускает метод 'changePage' java-интерфейса "

Основной класс Java:

public class MainActivity extends AppCompatActivity {
    private WebView webView;
    WebAppInterface interf;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = (WebView) findViewById(R.id.myWebView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebChromeClient(new WebChromeClient());
        interf = new WebAppInterface(webView);
        webView.addJavascriptInterface(interf, "Android");
        webView.loadUrl("file:///android_asset/page_1.html");
    }
}

Java-интерфейс между js-кодом и java:

class WebAppInterface {
    private WebView mWebView;
    WebAppInterface(WebView w) {
        mWebView = w;
    }
    @JavascriptInterface
    public void changePage() {
        // This line don't seems to have an effect on anything
        mWebView.loadUrl("file:///android_asset/page_2.html");
    }
}

И js-код, запускающий метод changePage в интерфейсе:

function changePage() {
    Android.changePage();
}
changePage();

Веб-сайт остается на page1.html. У меня есть некоторые анимации js, которые не замирают, и я не получаю ошибку.

Thx!

--- EDIT ---

хорошо, я нашел одно решение, какитак:

@JavascriptInterface
public void changePage() {
    mWebView.post(new Runnable() {
        public void run() {
            mWebView.loadUrl("file:///android_asset/page_2.html");
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...