如何将屏幕中的上下文写入活动文件之外



我正在使用jetpack compose为我的类项目编写UI,但我是android的新手。因此,我编写了不同的屏幕,它们基本上是MainActivity.kt文件之外的可组合函数。问题是,我能够正确地编写视图,但当我需要显示类似祝酒词的内容时,例如,我必须提供上下文,而我无法在这些文件中获得上下文。请告诉我我做错了什么。

//MainActivity.kt file
class MainActivity : ComponentActivity() {
lateinit var navController : NavHostController;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
CallOutTheme {
navController = rememberNavController()
Navigation(navController=navController,this)
}
}
}
}

Navigation.kt和Screen.kt文件的代码

//Navigation.kt
@Composable
fun Navigation(navController: NavHostController,context: Activity)
{
NavHost(navController=navController, startDestination = Screen.HomeScreen.route){
composable(route = Screen.HomeScreen.route)
{
WelcomeScreen(navController = navController,context)

}
composable(route = Screen.LoginScreen.route)
{
LoginScreen(context = context)
}
}
}
//Screen.kt
sealed class Screen(val route: String)
{
object HomeScreen : Screen("home_screen")
object LoginScreen : Screen("login_screen")
object TextEntryScreen : Screen("text_entry_screen")
}

HomeScreen.kt 示例

@Composable
fun HomeScreen(){
Text("this is where I need to use Toast or ")
}

您可以使用

LocalContext.current

以获取其他屏幕中的上下文。需要记住的一件事是,在可组合函数的一开始就将其值分配给一个变量,然后在任何需要的地方使用该变量

最新更新