标签: android-jetpack

LocalContext.current 上没有默认上下文

使用 LocalContext.current 会导致应用程序崩溃,告诉我:

java.lang.IllegalStateException: No default context
        at androidx.glance.CompositionLocalsKt$LocalContext$1.invoke(CompositionLocals.kt:35)
        at androidx.glance.CompositionLocalsKt$LocalContext$1.invoke(CompositionLocals.kt:35)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at androidx.compose.runtime.LazyValueHolder.getCurrent(ValueHolders.kt:29)
        at androidx.compose.runtime.LazyValueHolder.getValue(ValueHolders.kt:31)
        at androidx.compose.runtime.ComposerImpl.resolveCompositionLocal(Composer.kt:1776)
        at androidx.compose.runtime.ComposerImpl.consume(Composer.kt:1746)
        at com.bqubique.quran_randomayah.view.VerseCardKt.ButtonTile(VerseCard.kt:282)
        at com.bqubique.quran_randomayah.view.ComposableSingletons$VerseCardKt$lambda-2$1.invoke(VerseCard.kt:79)
        at com.bqubique.quran_randomayah.view.ComposableSingletons$VerseCardKt$lambda-2$1.invoke(VerseCard.kt:79)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116)
        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
        at
...
Run Code Online (Sandbox Code Playgroud)

使用的版本:

compose_version = '1.0.5'

wear_compose_version = '1.0.0-alpha15'

我尝试过在任何类型的 @Composable 中调用 LocalContext.current,甚至在 setContent{...} 内的 MainActivity.kt 中调用 LocalContext.current

wear-os android-jetpack android-jetpack-compose glance

1
推荐指数
1
解决办法
1409
查看次数

Android 撰写的步骤进度条

目前,我正在尝试找到一种简单的方法来实现步骤进度条,如下所示:

在此输入图像描述

有人有这方面的经验吗?也许有一个好的图书馆吗?

android android-jetpack android-jetpack-compose

1
推荐指数
1
解决办法
5037
查看次数

是否可以绑定到 android 中可组合项内的服务

我正在开发一个 Android 应用程序,当前绑定到我的位置服务,我在活动内部时从中接收位置更新,并且我想在用户完成身份验证过程后从可组合项内部执行此操作

android android-jetpack android-jetpack-compose

1
推荐指数
1
解决办法
1964
查看次数

以下函数均不能使用 jetpack compose 中 koin 上提供的参数进行调用

我在我的 jetpack compose 应用程序中使用 koin v3.2.0。我的viewModelOf. 我也从示例项目中正确导入。

\n
dependencies {\n\n    implementation \'androidx.core:core-ktx:1.8.0\'\n\n    implementation "androidx.compose.material:material:$compose_version"\n    implementation \'androidx.compose.material3:material3:1.0.0-alpha14\'\n\n    implementation "androidx.compose.ui:ui:$compose_version"\n    implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"\n    implementation \'androidx.activity:activity-compose:1.5.0\'\n    debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"\n    debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version"\n    implementation "androidx.compose.runtime:runtime-livedata:$compose_version"\n    implementation "androidx.navigation:navigation-compose:$nav_version"\n\n    testImplementation \'junit:junit:4.13.2\'\n\n    androidTestImplementation \'androidx.test.ext:junit:1.1.3\'\n\n    androidTestImplementation \'androidx.test.espresso:espresso-core:3.4.0\'\n\n    androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"\n\n    implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"\n    implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"\n    implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"\n\n    implementation \'androidx.work:work-runtime:2.7.1\'\n\n    implementation "com.google.accompanist:accompanist-systemuicontroller:0.17.0"\n\n    implementation "com.airbnb.android:lottie-compose:$lottieVersion"\n\n    implementation "io.insert-koin:koin-android:$koin_version"\n    implementation "io.insert-koin:koin-androidx-compose:$koin_version"\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n

应用程序模块.kt

\n
package com.vivek.sportsresult.di\n\nimport org.koin.androidx.viewmodel.dsl.viewModelOf\nimport org.koin.dsl.module\n\nval appModule = module {\n    viewModelOf(::MainActivityViewModel)\n}\n
Run Code Online (Sandbox Code Playgroud)\n

MainActivityViewModel.kt

\n
package com.vivek.sportsresult.viewmodel\n\nimport androidx.lifecycle.ViewModel\n\nclass MainActivityViewModel : ViewModel() …
Run Code Online (Sandbox Code Playgroud)

android kotlin koin android-jetpack android-jetpack-compose

1
推荐指数
1
解决办法
618
查看次数

onTap - 使用相同的代码和状态提升,检测TapGestures 无法作为可点击正常工作

我有一个方法“活动”,它托管一个“屏幕”,并且由于状态提升很酷,所以我这样做了,但遇到了问题。

虽然使用Modifier.clickable代码可以完美运行(增加值) ,但使用detectorTapGestures::onTap 时,相同的代码无法正常运行, 如通过Log.d("ExampleScreen", "onClick Multi Count is $multiCount")观察到的那样

@Composable
fun ExampleActivity() {
    var multiCount by remember {
        mutableStateOf(0)
    }

    Log.d("ExampleActivity", "Multi Count is $multiCount") //this works either way

    ExampleScreen(
        multiCount = multiCount,
        incrementMultiCount = {
            multiCount = ++multiCount
        }
    )
}

  @Composable
    fun ExampleScreen(
        modifier: Modifier = Modifier,
        multiCount: Int,
        incrementMultiCount: () -> Unit
    ) {
            Log.d("ExampleScreen", "Example Multi Count is $multiCount") //this works either way
            Column(
                modifier = modifier
                    .fillMaxSize()
                    .padding()
            ) …
Run Code Online (Sandbox Code Playgroud)

android-jetpack android-jetpack-compose

1
推荐指数
1
解决办法
714
查看次数

Jetpack Compose Android 按钮检测长按

如何检测长按

    Button(
    onClick = onClick,
    interactionSource = interactionSource,
    modifier = Modifier
        .combinedClickable(
            onClick = onClick,
            onLongClick = onLongClick
        )
)
Run Code Online (Sandbox Code Playgroud)

这是行不通的。onClick 是必需的,我猜它会消耗combinedClickable。我还需要一个交互源。我宁愿避免创建自定义按钮。

android button kotlin android-jetpack android-jetpack-compose

1
推荐指数
1
解决办法
1493
查看次数

0
推荐指数
2
解决办法
3134
查看次数

使用Jetifier工具的AndroidX迁移将支持库转换为RC版本

在迁移到Android X的过程中,tt似乎Jetifier工具将一些第三方库转换为RC版本(4.6版)。

 |    +--- com.facebook.android:facebook-common:4.34.0
|    |    |    +--- com.facebook.android:facebook-core:4.34.0 (*)
|    |    |    +--- com.google.zxing:core:3.3.0
|    |    |    +--- androidx.legacy:legacy-support-v4:1.0.0-rc01
|    |    |    |    +--- androidx.core:core:1.0.0-rc01 -> 1.0.1 (*)
|    |    |    |    +--- androidx.media:media:1.0.0-rc01
|    |    |    |    |    +--- androidx.annotation:annotation:1.0.0-rc01 -> 1.0.0
|    |    |    |    |    +--- androidx.core:core:1.0.0-rc01 -> 1.0.1 (*)
|    |    |    |    |    \--- androidx.versionedparcelable:versionedparcelable:1.0.0-rc01 -> 1.0.0 (*)
|    |    |    |    +--- androidx.legacy:legacy-support-core-utils:1.0.0-rc01 -> 1.0.0 (*)
|    |    |    |    +--- androidx.legacy:legacy-support-core-ui:1.0.0-rc01 …
Run Code Online (Sandbox Code Playgroud)

android android-studio android-jetpack androidx android-jetifier

0
推荐指数
1
解决办法
1095
查看次数

通过视图模型在片段之间共享数据

根据https://developer.android.com/topic/libraries/architecture/viewmodel 上的“片段之间共享数据”部分,我们被告知在活动范围内创建一个 ViewModel 并在片段之间共享是要走的路.

这是在 ViewModel 中设置值的 Fragment

class MasterFragment : Fragment() {

    private lateinit var itemSelector: Selector

    private lateinit var model: SharedViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        model = activity?.run {
            ViewModelProviders.of(this).get(SharedViewModel::class.java)
        } ?: throw Exception("Invalid Activity")
        itemSelector.setOnClickListener { item ->
            // Update the UI
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是使用属性集的细节片段

class DetailFragment : Fragment() {

    private lateinit var model: SharedViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        model = activity?.run {
            ViewModelProviders.of(this).get(SharedViewModel::class.java)
        } ?: throw Exception("Invalid Activity")
        model.selected.observe(this, …
Run Code Online (Sandbox Code Playgroud)

android android-viewmodel android-jetpack

0
推荐指数
1
解决办法
4921
查看次数

分页库:跳转列表项+最后总是相同的数据

我正在尝试使用 Paging 库、MVVM 和 LiveData 实现一个无限列表。

在我的视图(在我的例子中是我的片段)中,我从 ViewModel 中请求数据并观察变化:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        viewModel.getItems("someSearchQuery")
        viewModel.pagedItems.observe(this, Observer<PagedList<Item>> {
            // ItemPagedRecyclerAdapter
            // EDIT --> Found this in the official Google example
            // Workaround for an issue where RecyclerView incorrectly uses the loading / spinner
            // item added to the end of the list as an anchor during initial load.
            val layoutManager = (recycler.layoutManager as LinearLayoutManager)
            val position = layoutManager.findFirstCompletelyVisibleItemPosition()
            if (position != RecyclerView.NO_POSITION) {
                recycler.scrollToPosition(position)
            }
        }) …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-paging-library

0
推荐指数
1
解决办法
2322
查看次数