Android Studio NavBarGraph无法识别sealed类route属性问题咨询
问题根因
BottomBarScreen密封类主构造函数声明的route、title、icon三个参数未添加val修饰符。Kotlin中这类仅写在主构造参数列表、没有加val/var修饰的参数仅能在类初始化逻辑中访问,不会被生成为类的公开成员属性,因此在Nav Graph代码中访问实例的.route属性时,IDE无法检索到对应成员,触发语法报错。
修复方法
给密封类主构造的三个参数前加上val修饰符,将其声明为类的只读成员属性即可,修正后的代码如下:
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.Menu import androidx.compose.material.icons.filled.Person import androidx.compose.material.icons.filled.ShoppingCart import androidx.compose.ui.graphics.vector.ImageVector sealed class BottomBarScreen( val route: String, val title: String, val icon: ImageVector ){ object Home: BottomBarScreen( route="home", title = "Home", icon=Icons.Default.Home ) object Dashboard: BottomBarScreen("dashboard","Dashboard",Icons.Filled.Menu) object Orders: BottomBarScreen("orders","Orders",Icons.Default.ShoppingCart) object Profile: BottomBarScreen("profile","Profile",Icons.Default.Person) }
修改完成后同步工程、等待IDE索引完成,即可正常通过BottomBarScreen.Home.route这类写法调用对应路由字符串,Nav Graph相关代码不会再报成员不存在的错误。
内容的提问来源于stack exchange,提问作者Praneeth Bhargav
相关产品推荐
相关产品推荐

