对于有Jetpack编写经验的人来说,这可能是个愚蠢的问题,但由于某种原因,我的吐司没有显示。下面是它的代码片段。我在onCreate
方法的不同部分发送了3个带有.show()
的Toast,但仍然没有任何React。我还尝试使用LocalContext.current
作为@Composable
函数内的上下文,但结果相同,什么都没有显示。我在网上看到许多不同的例子,甚至在YouTube上的视频中也应该运行这个完全相同的可以。有人知道为什么吗?
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Toast.makeText(this, " ASDASDASD ", Toast.LENGTH_LONG).show()
setContent {
Toast.makeText(this, " ASDASDASD ", Toast.LENGTH_LONG).show()
MyApplicationTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
Toast.makeText(this, " ASDASDASD ", Toast.LENGTH_LONG).show()
Greeting("Android")
}
}
}
}
2条答案
按热度按时间wfveoks01#
显示
Toast
的示例代码。让我来分解一下这段代码中要研究的重要内容。
Toast
不应该是可组合代码的一部分,而应该是副作用代码的一部分。(e.g.
onClick()
、LaunchedEffect
、DisposableEffect
等)1.使用
LocalContext.current
获取可组合代码中的上下文。注意,必须将其存储在变量中,因为onClick()
中的代码没有可组合作用域。(如上所述)1.可组合对象的重新组合非常频繁,这取决于UI的变化,我们不希望每次可组合对象重新组合时都显示
Toast
。请参阅Side Effects Docs以更好地理解它。
9bfwbjaz2#
您需要使用
scaffold
来显示toast