小编Hec*_*tor的帖子

如何在没有Actionbar的应用程序中使用Mapbox PlacePicker活动?

我正在研究当前Android应用程序中优秀的Mapbox库.

我试图整合这个问题时遇到过这个问题PlacePickerActivity.

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.app.ActionBar.hide()' on a null object reference
        at com.mapbox.mapboxsdk.plugins.places.picker.ui.PlacePickerActivity.onCreate(PlacePickerActivity.java:65)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
Run Code Online (Sandbox Code Playgroud)

我的应用程序风格如下: -

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

我使用的版本是: -

// MAPBOX
implementation "com.mapbox.mapboxsdk:mapbox-android-sdk:$mapBoxSdkVersion"
implementation "com.mapbox.mapboxsdk:mapbox-android-plugin-traffic:$mapBoxTrafficVersion"
implementation "com.mapbox.mapboxsdk:mapbox-android-plugin-places:$mapBoxPlacesVersion"

    mapBoxSdkVersion = "6.8.1"
    mapBoxTrafficVersion = "0.6.0"
    mapBoxPlacesVersion = "0.6.0"
Run Code Online (Sandbox Code Playgroud)

我配置我的工具栏如下: -

   /**
     * @param toolbar
     */
    private void manageToolbar(final Toolbar toolbar) {
        mToolbar …
Run Code Online (Sandbox Code Playgroud)

android-toolbar mapbox-android

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

如何在自定义 Kotlin DSL 上执行使用规则

我正在按照以下示例调查 Kotlin DSL:-

https://github.com/zsmb13/VillageDSL

我对如何对 DSL 公开的所有属性实施使用规则感兴趣。

以下面的例子为例:-

val v = village {
    house {
        person {
            name = "Emily"
            age = 31
        }
         person {
            name = "Jane"
            age = 19
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想强制执行一个规则,阻止 DSL 的用户能够输入重复的属性,如下所示

val v = village {
    house {
        person {
            name = "Emily"
            name = "Elizabeth"
            age = 31
        }
         person {
            name = "Jane"
            age = 19
            age = 56
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用 Kotlin 合同,例如

contract { callsInPlace(block, EXACTLY_ONCE) }
Run Code Online (Sandbox Code Playgroud)

但是,这些只允许在顶级函数中使用,并且在遵循 …

dsl kotlin

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

当 Koin 可用时,我为什么要使用 Android Hilt (Dagger2)

我喜欢将我的 Android 应用程序中使用的第三方库的数量保持在绝对最低限度。

我开始使用Dagger2,然后切换到Koin.

Koin就是这么大的进步Dagger2

Koin 具有内置的 ViewModel 支持,不需要任何“额外”的工作人员。

Koin 允许您以最小的努力在任何地方注入任何东西,它非常棒。

在 Android Hilt 公告中,我完成了一个峰值来评估它,因为它会减少我对 3rd 方库的依赖。

完成我的尖峰努力后,我不明白为什么有人会使用 Hilt。

例如:

为了Koin注入一个Worker我有工作器实现KoinComponent,为了Hilt注入一个工作器,我需要禁用默认WorkerManager初始化,并使用两个注释@WorkerInject& @Assisted

我错过了什么吗?

android koin dagger-hilt

10
推荐指数
2
解决办法
4080
查看次数

Android AppStateManager ::检测到的DataBuffer对象内部数据泄漏

我正在使用AppState来存储我当前的Android应用程序数据.当我调用该 load方法并设置一个回调监听器时,我在logcat输出中看到以下内容.

检测到DataBuffer对象内部数据泄漏!确保在完成所有DataBuffer扩展对象后显式调用close().(com.google.android.gms.appstate.AppStateBuffer@45454128)

这是我的方法调用(我没有明确打开任何缓冲区)

AppStateManager
    .load(getApiClient(), APP_STATE_STATE_KEY)
    .setResultCallback(new ResultCallback<AppStateManager.StateResult>() {
        @Override
        public void onResult(final StateResult stateResult) {
        }
    });
Run Code Online (Sandbox Code Playgroud)

例如,该onResult()方法是空的,为什么我看到这个logcat条目?我需要什么缓冲关闭?

android google-play-services

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

Android Studio 3.2 logcat"仅显示选定的应用程序"不再是默认值

我一直在使用Android Studio版本

Android Studio 3.2
Build #AI-181.5540.7.32.5014246, built on September 17, 2018
JRE: 1.8.0_152-release-1136-b06 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.11.6
Run Code Online (Sandbox Code Playgroud)

它现在有一个恼人的"功能",每当我将应用程序部署到设备上时,我必须重新选择logcat下拉菜单"仅显示选定的应用程序".

实际上,只有在设备上安装APK后才会显示此值.

在以前版本的Android Studio中,它"记住"了我的选择.

无论如何,我可以配置Android Studio 3.2以保持"仅显示所选应用程序"的所需设置吗?

android-studio-3.0

9
推荐指数
0
解决办法
953
查看次数

如何替换 Android Gradle 构建文件中已弃用的 PackagingOptions

我已经迁移到 gradle 8 我的 android 构建 gradle 文件显示

plugins {
    id 'com.android.application' version '8.1.0-alpha01' apply false
    id 'com.android.library' version '8.1.0-alpha01' apply false
    id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
    id 'com.google.dagger.hilt.android' version '2.44.2' apply false
}

tasks.register('clean') {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

现在,在我的模块 gradle.build 文件中,packagingOptions 突出显示为已弃用

packagingOptions {
    resources {
        excludes += '/META-INF/{AL2.0,LGPL2.1}'
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我以为我已经找到了这个解决方案

packagingOptions {
    resources.excludes.add('/META-INF/{AL2.0,LGPL2.1}')
}
Run Code Online (Sandbox Code Playgroud)

这是行不通的!已弃用的 PackagingOptions 排除的正确替代品是什么?

我使用的android studio版本是

Android Studio Giraffe | 2022.3.1 Canary 1
Build #AI-223.4884.69.2231.9486165, built on January 13, 2023
Runtime version: 17.0.5+0-17.0.5b653.23-9410051 …
Run Code Online (Sandbox Code Playgroud)

android android-studio android-gradle-plugin

9
推荐指数
3
解决办法
1万
查看次数

在 Google Play Console 预启动报告期间运行 Android 撰写应用程序的 Robo 测试的替代方法

我的组织正在迁移到使用 Jetpack Compose 构建所有 Android UI。

我们设想的障碍之一是,我们无法再通过上传在 Android Studio 中记录的 Robo 脚本来直接发布预发布报告来测试新应用程序的特定部分。

现在,当我们尝试在 Android Studio 中录制新脚本时,会看到此弹出窗口

Android Studio 屏幕截图

我找不到有关何时支持撰写的任何信息

或者确实采用其他方法,使我们能够通过谷歌预发布报告登录我们的应用程序并完成有意义的预发布测试

我有什么选择?(除了要有耐心)

android google-play-console android-jetpack-compose

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

动态启用/禁用隐藏/取消隐藏Android ActionBar操作图标

我正在开发一个采用标准ActionBar的Android应用程序.
在某个屏幕上,我有一个有条件需要的过滤器图标,
具体取决于所显示数据的特征,例如,某些数据是可过滤的
.
我在动作栏上找不到任何方法,看起来可能是programmaticaly隐藏动作栏动作图标的候选人.如何启用/禁用操作栏操作图标?
或者
我如何隐藏/取消隐藏动作栏动作图标?

android android-actionbar

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

我可以忽略org.apache.kafka.common.errors.NotLeaderForPartitionExceptions吗?

我的Apache Kafka制作人(0.9.0.1)间歇地抛出一个

org.apache.kafka.common.errors.NotLeaderForPartitionException
Run Code Online (Sandbox Code Playgroud)

我执行Kafka发送的代码类似于此

final Future<RecordMetadata> futureRecordMetadata = KAFKA_PRODUCER.send(new ProducerRecord<String, String>(kafkaTopic, UUID.randomUUID().toString(), jsonMessage));

try {
    futureRecordMetadata.get();
} catch (final InterruptedException interruptedException) {
    interruptedException.printStackTrace();
    throw new RuntimeException("sendKafkaMessage(): Failed due to InterruptedException(): " + sourceTableName + " " + interruptedException.getMessage());
} catch (final ExecutionException executionException) {
    executionException.printStackTrace();
    throw new RuntimeException("sendKafkaMessage(): Failed due to ExecutionException(): " + sourceTableName + " " + executionException.getMessage());
}
Run Code Online (Sandbox Code Playgroud)

我赶上NotLeaderForPartitionExceptioncatch (final ExecutionException executionException) {}街区.

可以忽略这个特殊的例外吗?

我的Kafka邮件是否已成功发送?

exception-handling apache-kafka kafka-producer-api

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

为什么 Robolectric 4.4 打破了我的 MockK 测试

我当前的 Android 应用程序在其单元中使用 MockK

我所有的测试都按预期运行 testImplementation 'org.robolectric:robolectric:4.3'

但是,当我将版本增加到 testImplementation 'org.robolectric:robolectric:4.4'

我所有的测试都失败了,但有以下例外:-

java.lang.IllegalAccessError: tried to access class androidx.lifecycle.LiveData$ObserverWrapper from class androidx.lifecycle.LiveData$Subclass1

    at androidx.lifecycle.LiveData$Subclass1.<clinit>(Unknown Source)
    at sun.reflect.GeneratedSerializationConstructorAccessor7.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:48)
    at io.mockk.proxy.jvm.ObjenesisInstantiator.instanceViaObjenesis(ObjenesisInstantiator.kt:75)
    at io.mockk.proxy.jvm.ObjenesisInstantiator.instantiateViaProxy(ObjenesisInstantiator.kt:66)
    at io.mockk.proxy.jvm.ObjenesisInstantiator.instance(ObjenesisInstantiator.kt:29)
    at io.mockk.proxy.jvm.ProxyMaker.instantiate(ProxyMaker.kt:75)
    at io.mockk.proxy.jvm.ProxyMaker.proxy(ProxyMaker.kt:42)
    at io.mockk.impl.instantiation.JvmMockFactory.newProxy(JvmMockFactory.kt:34)
    at io.mockk.impl.instantiation.AbstractMockFactory.newProxy$default(AbstractMockFactory.kt:29)
    at io.mockk.impl.instantiation.AbstractMockFactory.temporaryMock(AbstractMockFactory.kt:127)
    at io.mockk.impl.recording.states.RecordingState$call$retValue$1.invoke(RecordingState.kt:72)
    at io.mockk.impl.instantiation.JvmAnyValueGenerator$anyValue$1.invoke(JvmAnyValueGenerator.kt:27)
    at io.mockk.impl.instantiation.AnyValueGenerator.anyValue(AnyValueGenerator.kt:27)
    at io.mockk.impl.instantiation.JvmAnyValueGenerator.anyValue(JvmAnyValueGenerator.kt:23)
    at io.mockk.impl.recording.states.RecordingState.call(RecordingState.kt:70)
    at io.mockk.impl.recording.CommonCallRecorder.call(CommonCallRecorder.kt:53)
    at io.mockk.impl.stub.MockKStub.handleInvocation(MockKStub.kt:263)
    at io.mockk.impl.instantiation.JvmMockFactoryHelper$mockHandler$1.invocation(JvmMockFactoryHelper.kt:25)
    at io.mockk.proxy.jvm.advice.Interceptor.call(Interceptor.kt:20)
    at io.mockk.proxy.jvm.advice.BaseAdvice.handle(BaseAdvice.kt:42)
    at io.mockk.proxy.jvm.advice.jvm.JvmMockKProxyInterceptor.interceptNoSuper(JvmMockKProxyInterceptor.java:45)
    at com.my.package.database.dao.ExplanationPublicationDAO$Subclass0.doesExplanationExist(Unknown Source)
    at com.my.package.my_details.MyRepositoryTest$doesExplanationExist$1.invoke(MyRepositoryTest.kt:67)
    at com.my.package.my_details.MyRepositoryTest$doesExplanationExist$1.invoke(MyRepositoryTest.kt:29)
    at io.mockk.impl.eval.RecordedBlockEvaluator$record$block$1.invoke(RecordedBlockEvaluator.kt:24)
    at io.mockk.impl.eval.RecordedBlockEvaluator$enhanceWithNPERethrow$1.invoke(RecordedBlockEvaluator.kt:74)
    at …
Run Code Online (Sandbox Code Playgroud)

android robolectric mockk

8
推荐指数
0
解决办法
721
查看次数