小编Nar*_*ath的帖子

使用 <FragmentContainerView> 代替 <fragment> 会导致应用程序在使用 BottomNav 和 jetpack 导航时崩溃

我正在创建一个带有 BottomNavigationView 的应用程序。

我正在使用 JetpackNavigation 和 kotlin。

我已将 XML 设置为

<fragment
        android:id="@+id/fragNavHost"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toTopOf="@+id/bottomNavView"
        app:navGraph="@navigation/bottom_nav_graph"
        tools:layout_editor_absoluteX="0dp" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottomNavView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/bottom_nav_menu">
Run Code Online (Sandbox Code Playgroud)

但我Replace the <fragment> tag with FragmentContainerView.从 Android Studio 建议中收到一条建议消息

该应用程序在使用 FragmentContainerView 时中断,但在使用 Fragment 时完美运行

我收到的错误是

Unable to start activity ComponentInfo{com.example.reportbusterclone/com.example.reportbusterclone.view.MainActivity}: java.lang.IllegalStateException: Activity com.example.reportbusterclone.view.MainActivity@f462d5a does not have a NavController set on 2131296446
Run Code Online (Sandbox Code Playgroud)

即使只有标签发生变化而没有其他变化。

android android-fragments kotlin android-jetpack-navigation

5
推荐指数
0
解决办法
235
查看次数

Jetpack Compose 卡上的事件处理

我有一个音乐播放器应用程序 - 在我的屏幕上,我有显示曲目信息的卡片。当我点击一张卡片时,播放器应该播放它的曲目。

@Composable
fun TrackCard(track: Track) {
    Card(
        modifier = Modifier.padding(5.dp).fillMaxWidth(),
        contentColor = Color.Black
    ) {
        Column(modifier = Modifier.padding(10.dp)) {
            ArtistName(text = track.artist.name)
            Headline(text = track.title)
            AlbumName(text = track.album.title)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我加入了试了一下ClickableModifier是这样的:clickable(onClick = {}) 为了让赛道玩,我需要另一个参数有关我TrackCard,播放器本身。由于我想将 UI 代码分开,我想知道是否可以添加一个事件侦听器并从那里访问播放曲目?(此外,我还想捕捉不同类型的事件,例如长按触摸等,以进行不同的事件处理)

跟踪卡像这样初始化:

@Composable
private fun ResultList(model: PlayerModel) {
    with(model) {
            LazyColumn(state = rememberLazyListState()) {
                items(tracks) {
                    TrackCard(it)
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我将如何做到这一点?

android event-handling kotlin android-jetpack-compose

4
推荐指数
2
解决办法
1622
查看次数