Trying make a simple browser, and can't set a fild that will showing current webview's url. Tried override functions, but always says that "name of function" overrides nothing. Also can add that webview is within fragment. Maybe i can call this from mainactivity, but idk how. webview_fragment.kt
package com.example.webviewapp
import android.content.ContentValues.TAG
import android.graphics.Bitmap
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.TextView
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment
class webview_fragment : Fragment(){
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view : View = inflater.inflate(R.layout.layout_webview_fragment, container, false)
val mWebView : WebView = view.findViewById(R.id.webViewMain)
mWebView.loadUrl("https://google.com")
val webSettings = mWebView.getSettings()
webSettings.setJavaScriptEnabled(true)
mWebView.setWebViewClient(WebViewClient())
requireActivity()
.onBackPressedDispatcher
.addCallback(viewLifecycleOwner, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Log.d(TAG, "Fragment back pressed invoked")
if (mWebView.canGoBack()){
mWebView.goBack()
} else {
requireActivity().finishAndRemoveTask()
}
}
}
)
mWebView.webViewClient = object : WebViewClient(){
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
val urlText: TextView? = view?.findViewById(R.id.urlText)
val mWebView : WebView? = view?.findViewById(R.id.webViewMain)
urlText?.setText(mWebView?.getUrl())
}
}
return view
}
}
mainactivity.kt
package com.example.webviewapp
import android.content.ContentValues.TAG
import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if (getSharedPreferences("app", Context.MODE_PRIVATE).getBoolean("Boolean", false) == false) {
supportFragmentManager
.beginTransaction()
.replace(R.id.fullcreen_holder, start_fragment())
.commit()
} else {
supportFragmentManager
.beginTransaction()
.replace(R.id.fullcreen_holder, webview_fragment())
.commit()
}
}
}