Не показывается url страницы в поле адреса

Рейтинг: 0Ответов: 1Опубликовано: 13.05.2023

У меня есть код браузера. В нем все работает, кроме отображения адреса страницы.

Подскажите, как исправить это?

Вот мой MainActivity:

    class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val  progressBar:ProgressBar=findViewById(R.id.progressBar)
        val inputUrl:EditText=findViewById(R.id.autoCompleteTextView)
        val  webView:WebView=findViewById(R.id.webView)
        val sendButton:ImageButton=findViewById(R.id.sendButton)
        val forwardButton:ImageButton=findViewById(R.id.forwardButton)
        val backButton:ImageButton=findViewById(R.id.backButton)
        val refreshButton:ImageButton=findViewById(R.id.refreshButton)
        webView.webViewClient = myWebClient()

        webView.webChromeClient = object : WebChromeClient() {
            override fun onProgressChanged(view: WebView, newProgress: Int) {
                progressBar.progress = newProgress
                if (newProgress == 100) progressBar.visibility =
                    View.GONE else progressBar.visibility =
                    View.VISIBLE
            }
        }

        val webset = webView.settings
        webset.javaScriptEnabled = true

        webView.loadUrl("http://www.google.com")
        val webUrl = webView.url
        inputUrl.setText(webUrl)


        sendButton.setOnClickListener {
            var url = inputUrl.text.toString()
            if (!url.startsWith("http://")) {
                url = "http://$url"
            }
            val webUrl = webView.url.toString()
            inputUrl.setText(webUrl)
            val inputMethodManager: InputMethodManager =
                getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
            inputMethodManager.hideSoftInputFromWindow(webView.windowToken, 0)
        }

        forwardButton.setOnClickListener {
            if (webView.canGoForward()) webView.goForward()

            val webUrl = webView.url.toString()
            inputUrl.setText(webUrl)
        }

        backButton.setOnClickListener {
            if (webView.canGoBack()) webView.goBack()

            val webUrl = webView.url.toString()
            inputUrl.setText(webUrl)
        }

        refreshButton.setOnClickListener { webView.reload() }

    }
}

myWebClient (для загрузки страницы):

    class myWebClient : WebViewClient() {
    override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
        view.loadUrl(url)
        return true
    }
}

xml браузера:

    <androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".MainActivity">

    <ImageButton
        android:id="@+id/sendButton"
        android:layout_width="45dp"
        android:layout_height="43dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/baseline_search_black_24dp" />

    <AutoCompleteTextView
        android:id="@+id/autoCompleteTextView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="4dp"
        android:layout_marginTop="8dp"
        app:layout_constraintEnd_toStartOf="@+id/sendButton"
        app:layout_constraintStart_toEndOf="@+id/refreshButton"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageButton
        android:id="@+id/refreshButton"
        android:layout_width="45dp"
        android:layout_height="43dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        app:layout_constraintStart_toEndOf="@+id/forwardButton"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/baseline_refresh_black_24dp" />

    <ImageButton
        android:id="@+id/forwardButton"
        android:layout_width="45dp"
        android:layout_height="43dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        app:layout_constraintStart_toEndOf="@+id/backButton"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/baseline_redo_black_24dp" />

    <ImageButton
        android:id="@+id/backButton"
        android:layout_width="45dp"
        android:layout_height="43dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/baseline_undo_black_24dp" />

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/refreshButton" />

    <WebView
        android:id="@+id/webView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/progressBar">

    </WebView>

</androidx.constraintlayout.widget.ConstraintLayout>

Ответы

▲ 0

Все оказалась довольно просто, надо было всего лишь написать две строчки в progressbar:

override fun onProgressChanged(view: WebView, newProgress: Int) {
    progressBar.progress = newProgress
    if (newProgress == 100) {
        val webUrl = webView.url
        inputUrl.setText(webUrl)
        progressBar.visibility = View.GONE
    } else {
        progressBar.visibility = View.VISIBLE
    }
}