android-jetpack 相关问题

Android Jetpack是Google的一套库,工具和架构指南,用于构建Android应用程序并提供通用的基础架构代码。

如何使用 LiveData 检索视图模型中的数据库数据

使用 Firebase Auth 成功登录后,我的 Fragment 会收到当前用户详细信息。有了这些,我想查找具有相同用户 ID 的现有数据库记录,如果不存在,

回答 1 投票 0

即使更改了 xml 文件中的填充颜色,图标颜色也没有改变

这是类似 icon svg 的代码,我已将颜色从黑色更改为粉红色,但是当我尝试使用 compose 显示图标时,它仅显示为黑色,如下所示 撰写代码是

回答 2 投票 0

如何在jetpack compose中创建定制的银色应用栏

我想在jetpack中构建一个应用程序,与自定义应用程序组成意味着带有列表的银色应用程序。提前致谢 jetpack compose silver 应用程序栏在此处查看 UI

回答 1 投票 0

Jetpack Compose 导航中出现 NoSuchMethodError

堆栈跟踪 java.lang.NoSuchMethodError:没有虚拟方法 setScreen()Lkotlin/jvm/functions/Function3; 在 Lcom/example/app/presentation/navigation/Screen$ExampleScreen 类中; 或其超类(

回答 1 投票 0

如何在特定情况下清除jetpack数据存储数据

我使用jetpack数据存储已经有一段时间了,但后来我遇到了问题。 我想在应用程序被销毁时清除数据存储中的数据。 我使用 jetpack 数据存储仅以表单形式保存数据 我已经看到...

回答 5 投票 0

当用户离开屏幕时如何销毁ViewModel

在我的项目中,我有一个启动屏幕,当它显示时,我的应用程序从服务器加载一些启动数据,加载数据后显示另一个屏幕。 对于启动屏幕,我创建了一个 ViewModel,但它......

回答 3 投票 0

使用 Android Jetpack Compose 构建首选项屏幕

我必须构建一个新的Android应用程序。由于 Jetpack Compose 现已稳定,我想用它构建整个 UI。此外,我还需要一个首选项/设置屏幕,用户可以在其中指定他的首选项...

回答 3 投票 0

Android Jetpack Compose + OKHttp

在尝试将 Jetpack Compose 与 OKHttp 一起使用时,我正在发出一个 HTTP 请求,当它返回时(如果成功)我想启动一个新活动,否则向用户显示一条 toast 错误消息。 豪...

回答 2 投票 0

Jetpack 中有像 flutter 那样的热重载吗?

任何让android studio Jetpack像Flutter中的热重载一样自动刷新的想法都很烦人! Jetpack Compose 查看器中是否有自动刷新功能?

回答 3 投票 0

BottomSheetScaffold 导航回来时不会保留sheetPeekHeight (Jetpack Compose)

根据 AndroidX Compose Material 3 示例,此 BottomSheetScaffold 的 peekHeight = 128dp。此时它只有两种状态:Expanded 和 PartiallyExpanded。当我导航到另一个页面时...

回答 2 投票 0

Android Paging 3 库使用 Jetpack Compose 无限加载,无需滚动

我正在尝试使用 Jetpack Compose 和 Android 的 Paging 3 库制作分页书籍列表。我能够制作分页列表并获取数据,但我的分页数据的 load() 函数

回答 3 投票 0

Android:DataStore 相对于 SharedPreferences 的优势

android Jetpack 团队最近发布了 DataStore 库(仍处于 alpha 版本),作为使用两种实现保存简单数据的方法: Preference DataStore 具有与

回答 2 投票 0

如何在 Android Jetpack Compose 中传递可选布尔参数?

我正在尝试在用户可以从欢迎页面显示欢迎消息时在仪表板上向用户显示欢迎消息。 因此,在仪表板的路线中,我定义了一个可选参数。 访问正常...

回答 1 投票 0

如何在可组合项中重置记住的可变状态?

我使用了这里的示例: @可组合 私人乐趣 TimedLayout() { var 通过记住 { mutableStateOf(true) } 显示 启动效果(key1 = 单位){ 延迟(5000) 显示=假 ...

回答 3 投票 0

忽略 Jetpack Compose Card 上的点击,但在包含的布局中捕获它

我有一个 CardView 的 XML 布局,我将其更改为 Jetpack Compose Card。 此卡包含在另一个可点击的较大 XML 布局中,该布局在该卡周围还有其他项目。 在旧的 CardView 中...

回答 2 投票 0

为什么 Jetpack Compose Preview 不显示任何内容?

我正在使用 Jetpack Compose,预览仅显示标题: 但如果我使用 dev13 版本,它工作正常。 IDE:Android Studio 4.2 Canary 7 撰写:0.1.0-dev17

回答 3 投票 0

如何在 Jetpack Compose 中将 Box 布局的子项垂直居中?

我想获得这样的布局,其中所有图像都垂直居中。举个例子: 它在代码中的样子如下: 盒子( 修饰符 = 修饰符 .宽度(254.dp)...

回答 2 投票 0

没有通过 LocalViewModelStoreOwner 提供 ViewModelStoreOwner

我目前正在迁移 RecyclerView 以使用 Compose。我们决定采用自下而上的方法,通过单独转换视图持有者项目视图以使用包含可组合项的 ComposeView。 ...

回答 5 投票 0

Jetpack Compose Tapjacking:过滤模糊 UI 上的触摸

虽然 Android 中的传统 XML 视图中存在大量关于 Tapjacking 的文档,以防止恶意应用程序与敏感信息交互,但似乎没有围绕该问题...

回答 2 投票 0

如何将 Click 事件从父 XML 视图传递到 Jetpack Compose 内部

我有一个使用 XML 和 Kotlin 制作的现有应用程序。更新时,我想学习 Jetpack Compose,因此我使用 ComposeView 在父 XML 屏幕中添加了一个 HorizontalPager。 在 XML 中 我有一个使用 XML 和 Kotlin 制作的现有应用程序。更新时,我想学习 Jetpack Compose,因此我使用 ComposeView 在父 XML 屏幕中添加了一个 HorizontalPager。 在 XML 中 <androidx.compose.ui.platform.ComposeView android:id="@+id/my_composable" android:layout_width="0dp" android:layout_height="0dp" android:visibility="visible" app:layout_constraintBottom_toTopOf="@+id/divider" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> 然后在 Kotlin 中我做到了 binding.value.myComposable.setContent { IntroPager() } 我的撰写功能 @OptIn(ExperimentalFoundationApi::class) @Composable fun IntroPager(){ val pagerState = rememberPagerState(pageCount = { 3 }) Box(modifier = Modifier.fillMaxSize()) { HorizontalPager( state = pagerState, modifier = Modifier.fillMaxSize() ) { page -> when (page){ 0-> Page1("") 1-> Page2("") 2-> Page3("") else -> Page1(" from else $page") } } Row( Modifier .wrapContentHeight() .fillMaxWidth() .align(Alignment.BottomCenter) .padding(bottom = 8.dp), horizontalArrangement = Arrangement.Center ) { repeat(pagerState.pageCount) { iteration -> val color = if (pagerState.currentPage == iteration) Color(R.color.theme_color_secondary) else Color(R.color.dark_grey) Box( modifier = Modifier .padding(2.dp) .clip(CircleShape) .background(color) .size(16.dp) ) } } } } 现在,基于屏幕 XML 部分中的一些用户交互,我想从 XML onClickListener 传递单击事件,以转到 Compose 中 HorizontalPager 中的下一页。基本上将 XML clickEvent 传递给 Compose。 我找不到任何有关如何实现此目标的文档。 我尝试实现接口回调,但不成功 在pagerState的开头定义setContent并将其作为参数发送给IntroPager。 var pagerState = rememberPagerState(pageCount = { 3 }) fun IntroPager(pagerState: PagerState) 用它进行页面切换 val scope = rememberCoroutineScope() scope.launch { pagerState.scrollToPage(value) } 您必须在 setContent 之后添加 xml clickListener。否则你会得到这个错误。 @Composable 调用只能在 a 的上下文中发生 @可组合 我能想到的唯一可行的解决方案是使用共享 ViewModel。这是我所做的: 我创建了一个 ViewModel 类,其中包含增加页面索引的函数: class PagerViewModel : ViewModel() { val page = mutableIntStateOf(0) fun nextPage(){ if (page.value<=2) page.value++ } } 然后我在我的父 Activity 中链接了这个 ViewModel。对于 XML 中的点击事件,我调用了 pagerViewModel.nextPage() 函数。 然后在我的 Compose 代码中: @OptIn(ExperimentalFoundationApi::class) @Composable fun IntroPager(pagerViewModel: PagerViewModel){ val pagerState = rememberPagerState(pageCount = { 3 }) Box(modifier = Modifier.fillMaxSize()) { HorizontalPager( state = pagerState, modifier = Modifier.fillMaxSize() ) { page -> Log.d("IntroPager", "IntroPager: "+pagerViewModel.page.value) when (page){ 0-> { Page1("") } 1-> { Page2("") } 2-> { Page3("") } else -> Page1(" from else $page") } } Row( Modifier .wrapContentHeight() .fillMaxWidth() .align(Alignment.BottomCenter) .padding(bottom = 8.dp), horizontalArrangement = Arrangement.Center ) { repeat(pagerState.pageCount) { iteration -> val color = if (pagerState.currentPage == iteration) Color(R.color.theme_color_secondary) else Color(R.color.dark_grey) Box( modifier = Modifier .padding(2.dp) .clip(CircleShape) .background(color) .size(16.dp) ) } } LaunchedEffect(pagerViewModel.page.value) { pagerState.animateScrollToPage( pagerViewModel.page.value) } LaunchedEffect(pagerState){ snapshotFlow { pagerState.currentPage }.collect { page -> pagerViewModel.page.intValue = page } } } } 这会将 ViewModel 页面索引链接到 HorizontalPager 状态。 LaunchedEffect(pagerViewModel.page.value) {} 每当 pageIndex 的值发生变化时启动协程,它会以动画方式滚动到该页面。 我想要一种直接的方法来连接 XML 和 Compose 之间的单击事件。但我找不到简单的解决方案,所以我求助于使用共享 ViewModel 来更新状态。

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.