我有两个具有不同功能的活动,它们之间可以进行导航,但是如何导航到不属于该活动的功能呢?我不能使用意图进行导航,也不能使用导航进行导航,因为这些功能属于不同的活动。
我想从StartActivity的一个功能移动到MainActivity,但是我遇到了错误: @Composable调用只能在@Composable函数的上下文中发生。
这是我的主要活动:
另一个活动
现在在我的Introduction可组合函数内部:
我想从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)
}