gee*_*eek 3 android kotlin android-jetpack-navigation android-jetpack-compose
我在 Jetpack compose 中导航到另一个屏幕时遇到问题。我已经设置好所有内容,并仔细检查了所有内容,但是,当我按下按钮时,它应该会带到另一个屏幕。我在 logcat 中得到了一些调试信息,这表明导航确实出了问题,并且什么也不会发生。当我试图找出问题时,我发现应该代表第二个屏幕的函数被成功调用,并且当我使用函数 Log.d("Second screen") 时,它将成功地打印在日志猫中。尽管如此,任何内容都不会出现,之前的内容也不会消失。我试着用谷歌搜索它,还询问了聊天gpt,但我没有找到任何东西,聊天gpt只告诉我它应该工作正常,我应该再次检查所有内容。最后,我创建了一个新项目并将代码放入其中,认为可能是某些项目设置导致了问题,但没有任何改变。
这是我的 Main_activity。设置了导航的所有内容以及应该启动它的按钮:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ToDoApp2Theme {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = Screens.HomeScreen.route) {
composable(route = Screens.HomeScreen.route){ Greeting(navController) }
composable(route = Screens.AddScreen.route){ Add_screen(navController) }
}
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
Greeting(navController)
}
}
}
}
}
@Composable
fun Greeting(navController: NavController, modifier: Modifier = Modifier) {
Box(modifier = Modifier
.width(15.dp)
.height(20.dp)
.padding(vertical = 100.dp, horizontal = 100.dp)){
Button(onClick = {
navController.navigate(Screens.AddScreen.route)
}) {
Text(text = "+")
}
}
}
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
ToDoApp2Theme {
val navController = rememberNavController()
Greeting(navController = navController)
}
}
Run Code Online (Sandbox Code Playgroud)
屏幕:
package com.example.todoapp2
sealed class Screens(val route: String){
object HomeScreen : Screens("Greeting")
object AddScreen : Screens("AddScreen")
}
Run Code Online (Sandbox Code Playgroud)
添加屏幕:
package com.example.todoapp2
import android.util.Log
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.navigation.NavController
@Composable
fun Add_screen(navController: NavController) {
Text(text = "this is my add screen")
}
Run Code Online (Sandbox Code Playgroud)
我已经在最新版本中实现了导航:2.7.4。我的应用程序没有错误。我认为应该与此相关的 logcat 中的调试是: navgesturemodeswipeFromBottomignore true downX 63 downY 1591 mScreenHeight 1600 mScreenWidth 720 downX 和 downY 的值每次都在变化。每次我按下按钮时都会写入它。我是 jetpack compose 的新手,我没有可以解决此问题的选项。请问有人知道如何解决这个问题吗?
ANavHost是显示应用程序屏幕的内容。通过添加另一个Surface纯色,您可以有效地用屏幕的另一个副本NavHost完全隐藏实际内容- 该副本也隐藏.GreetingNavHost
因此,只需完全删除另一个屏幕Surface,您就只能看到您的NavHost屏幕和您拨打电话时它在之间交换的屏幕navigate。
| 归档时间: |
|
| 查看次数: |
2034 次 |
| 最近记录: |