我已经创建了WebView,这是一个可组合的安卓视图。它是屏幕的脚手架的内容,脚手架本身有TopBar作为一个动作栏,在左边有一个后退按钮,我想处理onClicked后退按钮,以检查WebView是否可以像Android View上的正常行为一样返回。问题是如何创建一个了解WebView的onClicked事件?
代码:
Scaffold(
topBar = {
CustomAppBar(
title = title,
onBackPressed = {
// check webview.canGoBack()
// if yes, just go back
// if not, finish activity
},
)
},
content = {
CustomWebView(
url = originalUrl,
)
}
)发布于 2021-06-29 04:28:42
你需要在一个变量中跟踪它,比如说在脚手架之外。就像这样
var canGoBack by mutableStateOf (false)
var goBackTrigger by mutableStateOf (false)
Scaffold(
topBar = {
CustomAppBar(
title = title,
onBackPressed = {
if(canGoBack){
goBackTrigger = true
}
else{
//Finish activity
}
},
)
},
content = {
CustomWebView(
url = originalUrl,
goBackTrigger = goBackTrigger
)
}
)
@Composable
fun CustomWebView(
url: String,
goBackTrigger: Boolean
){
//Add this where you can access the webView methods
if(goBackTrigger){
webView.goBack()
goBackTrigger = false
//You might need to update the url here as well. See to it.
}
}其思想是将状态存储在变量中,并在满足条件时从内容web视图中修改该变量。将变量定义在scaffold上方的原因是为了确保可以从内容块中访问它。
每当触发器发生变化时,webView就会被重新组合,因为它正在读取这个变量。
https://stackoverflow.com/questions/68165980
复制相似问题