试着做一个简单的浏览器,但是不能设置一个显示当前webview的url的字段。试着覆盖函数,但是总是说“函数名”什么都不覆盖。也可以添加webview在fragment中。也许我可以从mainactivity调用这个,但是idk怎么做。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()
}
}
}
2条答案
按热度按时间1zmg4dgp1#
您可以简单地从webView获取web url,如下所示
您的代码中几乎没有问题
在上面的代码中,textView您尝试从WebView的视图而不是从片段的视图访问它,这就是您遇到问题的原因,您应该在**override fun onPageFinished(view:WebView ™,网址:字符串?)**来解决冲突。
sulc1iza2#
你可以这样做,
它会在你每次移动到其他网页时自动更新文本视图。