我有两个活动,它们有不同的导航功能,但如何导航到不属于该活动的功能.我不能使用意图导航,也不能使用导航导航,因为这些功能是不同活动的一部分.
我想从作为StartActivity一部分的函数移动到MainActivity,但我收到错误: @Composable调用只能从@Composable函数的上下文中进行
以下是我的主要活动:
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
private val startViewModel: StartViewModel by viewModels()
private val viewModel: TabBarViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val navController: NavHostController = rememberNavController()
NavHost(
navController = navController,
startDestination = Screen.Introduction.route
) {
composable(Screen.BottomNavigationScreen.route) {
BottomNavigationScreen()
}
}
}
}
}
另一项活动
@AndroidEntryPoint
class StartActivity : ComponentActivity() {
private val viewModel: StartViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val startDestination = if (AppPreferences.hasSeenIntro) {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
return
} else if (AppPreferences.hasDownloadedContent) {
Screen.Introduction.route
} else {
Screen.SelectLanguage.route
}
setContent {
val navController: NavHostController = rememberNavController()
NavHost(
navController = navController,
startDestination = startDestination
) {
composable(Screen.Start.route) {
Start(navController, viewModel)
}
composable(Screen.CheckWhere.route) {
CheckWheretoGo(navController)
}
composable(Screen.SelectLanguage.route) {
SelectLanguage(navController)
}
composable(Screen.Introduction.route) {
IntroductionScreen(navController)
}
}
}
}
现在在我的Introduction可组合函数中:
@Composable
Introduction(){
IconButton(onClick = {
if (selectedPosition + 1 == items.size) {
val context = LocalContext.current
val intent = Intent(context, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}