Tag: 安卓

匕首与Kotlin上的Mvp – Android

我是刚刚进​​入Kotlin的Android开发人员,我一直试图在Kotlin上设置Mvp Dagger应用程序,但我无法弄清楚发生了什么事情。 我继续得到这个错误: Error:dagger.internal.codegen.ComponentProcessor was unable to process this interface because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code. 这是我的代码: KotlinApplication: class KotlinApplication: MultiDexApplication(), HasActivityInjector { @Inject lateinit var injector: DispatchingAndroidInjector override fun onCreate() { super.onCreate() inject() } override fun activityInjector(): AndroidInjector { return […]

如何调用Kotlin中的ArrayAdapter.addAll方法?

我有一个非常简单的列表(所以没有必要创建一个扩展BaseAdapter的自定义适配器)。 我使用ArrayApdater来实现这一点。 当我想改变适配器的值时,有一个构建错误说有两个allAll方法,kotlin不知道要使用哪一个。 以下是示例代码: val list = Collections.emptyList() // Just for sample. val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, list) // This line is OK // Some work later adapter.clear() adapter.addAll(list) // Here’s the error 错误消息是: Error:(79, 35) Overload resolution ambiguity: public open fun addAll(p0: (MutableCollection..Collection?)): Unit defined in android.widget.ArrayAdapter public open fun addAll(vararg p0: Any!): Unit […]

通用类中的kotlin 1.1.4原语

我在一个对象类中声明了这样一个字段: private val longObjectResourceDecoder = object : ResourceDecoder {} 然后,我通过kapt将这个java代码生成到stub java类中: private static final com.bumptech.glide.load.ResourceDecoder longObjectResourceDecoder = null 它不会编译,因为原始typeslong被用作types参数! 我试过了: 清洁和建设 在Android Studio中将kotlin更新配置为1.1.4 但问题依然存在。 我该如何解决这个问题?

在kotlin android项目中使用intellij-markdown

我想在一个android kotlin项目中使用intellij-markdown,但是它并不能保证java往返。 现在我正在寻找处理这个问题最痛苦的方法,因此在这里问 – 也许有人面临同样的问题。 目前所有的解决方案都不是很好,因为它们都与上游不同。 Error:Error converting bytecode to dex: Cause: Dex cannot parse version 52 byte code. This is caused by library dependencies that have been compiled using Java 8 or above. If you are using the ‘java’ gradle plugin in a library submodule add targetCompatibility = ‘1.7’ sourceCompatibility = ‘1.7’ to that […]

运行Kotlin代码时,Android Studio会抛出java.lang.ClassNotFoundExceptionexception

我在KotlinMain.kt写了一个简单的kotlin代码: fun main(args: Array) { println(“Hello world from Kotlin.”) } 但是当我运行这个方法时,Android Studio会抛出 Exception in thread “main” java.lang.ClassNotFoundException: com.li.sample.KotlinMainKt at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:107) 但是当我把这个代码写入一个Java文件时,它工作正常。 如何解决这个问题呢 ?

Kotlin – 高阶函数和types不匹配

我刚开始学习kotlin,并正在努力理解高阶函数如何确定types,我经常看到这种错误 错误:types不匹配:推断的types是KFunction2但(字符串) – >单位是预期的 上述错误是由以下原因造成的 class MyClass(private val valueChangeListener: MyValueChangeListener, public val storage: MyStorage): MySuperClass { fun saveValue(potentialValue: String) { super.processValue(potentialValue, MyClass::save) } fun save(value: String){ storage.storeValue(value) valueChangeListener.onValueChanged(value) } } 但是,如果我使用Lambda全部解决 class MyClass(private val valueChangeListener: MyValueChangeListener, public val storage: MyStorage): MySuperClass { fun saveValue(potentialValue: String) { super.processValue(potentialValue, super.processValue(potentialValue, { value: String -> save(value) }) } […]

AES加密。 PHP和Kotlin \ Java的区别

有一个网站使用CryptoJSAES库来编码和解码请求。 https://github.com/blocktrail/cryptojs-aes-php/blob/master/src/CryptoJSAES.php abstract class CryptoJSAES { /** * @param $data * @param $passphrase * @param null $salt ONLY FOR TESTING * @return string encrypted data in base64 OpenSSL format */ public static function encrypt($data, $passphrase, $salt = null) { $salt = $salt ?: openssl_random_pseudo_bytes(8); list($key, $iv) = self::evpkdf($passphrase, $salt); $ct = openssl_encrypt($data, ‘aes-256-cbc’, $key, true, […]

匕首2在Kotlin未解决的参考DaggerXXXSub

我试图在我的Android项目中使用Dagger 2,我在Kotlin编码。 我在我的项目中使用了Dagger 2,就像Dagger 2 Android中的例子。 应用程序/的build.gradle apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ android { compileSdkVersion 26 buildToolsVersion “26.0.2” defaultConfig { applicationId “com.wj.kotlintest” minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName “1.0” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } } dependencies { implementation fileTree(dir: ‘libs’, include: […]

无法用匕首2运行kotlin

我是新手kotlin和匕首2.我尝试在Android Java中遵循本指南 。 但错误是扔… 错误:执行任务’:app:kaptDebugKotlin’失败。 内部编译器错误。 查看日志了解更多详情 我做错了什么? 应用 class App : Application() { val netComponent: NetComponent by lazy { DaggerNetComponent.builder() .appModule(AppModule(this)) // This also corresponds to the name of your module: %component_name%Module .netModule(NetModule(“https://api.github.com”)) .build() } override fun onCreate() { super.onCreate() } fun netComponent() : NetComponent = netComponent } NetComponent @Singleton @Component(modules= arrayOf(AppModule::class, NetModule::class)) interface […]

匕首2不能从子组件(kotlin)注入

我知道,一般来说,这是使用Kotlin不应该有所作为,但我遇到了奇怪的情况,其中@Named限定符需要Kotlin中的范围如此裸露在我身边。 我有一个ViewHolderFactory类,它允许我创建一个简单的视图types – >视图持有者类的映射: @Singleton class ViewHolderFactoryImpl @Inject constructor( private val viewHolderComponentProvider: Provider ): ViewHolderFactory(mapOf( R.layout.view_error to ErrorViewHolder::class.java, R.layout.view_soft_error to SoftErrorViewHolder::class.java, R.layout.view_empty to EmptyViewHolder::class.java, R.layout.view_loading to LoadingViewHolder::class.java, R.layout.item_got_it to GotItViewHolder::class.java)) { override fun createViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val viewHolder = super.createViewHolder(parent, viewType) if (viewHolder is Injectable) { viewHolderComponentProvider.get() .viewHolder(viewHolder) .build() .inject(viewHolder) } return […]