问题标签 [kotlin-android-extensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
461 浏览

android - 仅使用 Maven 使用 Kotlin 的 Android 资源扩展

我想在我的基于 Maven 的项目中使用Kotlin Android 扩展,但是尽管添加kotlin-android-extensions到我的 Maven 插件集中,它只是不需要。

我的,我认为相当少,设置如下:

AndroidManifest.xml

pom.xml

res/layout/main_activity.xml

src/activity.kt

所以这一切都有效,直到我更改activity.kt为 importkotlinx.android.synthetic.main.main_activity.*而不是import com.example.KotlinAndroid.R,然后失败

  • [错误] hello-kotlin/src/activity.kt:(6、8)未解决的参考:kotlinx

  • [错误] hello-kotlin/src/activity.kt:(12、24)未解决的参考:R

我发现这个问题的所有解决方案都只适用于 Gradle 构建,在这种情况下,显然添加kotlin-android-extensions插件就足够了。kotlin-android-extensions但是,在我的仅 Maven 构建中,我的插件列表中已经有了(请参阅pom.xml文件);然而 Kotlin 并没有生成所需的kotlinx.*类。

0 投票
2 回答
746 浏览

gradle - kotlin-gradle 插件自动配置错误

模块 build.gradle 代码和文件结构

项目build.gradle和buildscript代码,报错

刚开始使用 kotlin 进行 android 开发。将 MainActivity 转换为 .kt 后,需要配置 kotlin-gradle 插件。IntelliJ 提供自动执行此操作,但失败并出现错误:找不到模块应用程序的 build.gradle。我知道我可以自己配置,但是为什么intelliJ找不到build.gradle文件,它们在intelliJ自己自动生成的项目中。我有什么配置不正确吗?任何帮助或见解表示赞赏,在此先感谢您。

0 投票
2 回答
1951 浏览

android - 在 Kotlin 中使用 Singleton 的 StackOverflowError

谁能告诉我,为什么我要java.lang.StackOverflowError使用这个 Kotlin 类?第 41 行是if (instance == null) {

堆栈跟踪:

Android Studio 2.0、Kotlin 1.0.1-2

0 投票
0 回答
4897 浏览

java - Kotlin 自定义视图类实现了一个在 `:app:compileDebugKotlinAfterJava` 中无法解析的接口。相同的 Java 版本可以正常工作

我有一个 Android 项目,其中包含一个aar library module通用类,这些类被用作多个应用程序的基础。一切都是用 Kotlin 编写的,没有使用任何 Java 代码(第三方库除外)。

尝试组装应用程序以运行时会出现此问题。尝试运行我的应用程序时出现以下错误:

出于这个问题的目的,我编写了自定义 TextView 的两个单独版本,它们扩展了android.widget.TextView类并实现了一个接口,比如说Localizable;一进Java一进Kotlin

ECMJavaTextView.java

ECMKotlinTextView.kt

两者在库模块中都有 xml 布局,我将它们包含在main_activity.xml文件中。我设法将问题隔离到findViewbyId()方法上(这里我使用kotlin-extensions库来获取视图;两者都试过)。

MainActivity.kt

第二次强制转换总是给出上面提到的错误,但是如果我删除强制转换 ( ECMKotlinTextView),我将无法访问Localizable我需要的方法。更有趣的一点是JAVA类按预期工作。

不确定它是否是我遗漏或尚未设置的东西,或者它当前是否是 Kotlin 插件中的错误。有人可以帮我吗?一些见解将不胜感激。

0 投票
2 回答
23358 浏览

list - Kotlin - 列表过滤中的列表

我有这些数据类:

我想按类型过滤 RouteType 列表,并按 id 过滤其中的 RouteItem 列表。

我现在的代码:

如何制作.map包含过滤列表的返回列表?或者也许还有其他方法?

编辑

谢谢,但flatmap不完全是我需要的,我想。flatmap返回嵌套列表(List<RouteItem>),但我想要List<RouteType>

我通过这段代码得到了它:

有没有其他方法可以得到它?

0 投票
1 回答
376 浏览

android - 包含 android-extensions 的 Kotlin 类不是基于后续构建构建的

我最近决定将我们公司的 android 应用程序移植到 kotlin 中。它工作得很好,但是,当我使用任何 kotlin 扩展时,我会得到一个奇怪的行为。我注意到任何使用扩展的类(无论是 anko 还是自我声明的扩展)都只是第一次构建,并且在每个后续构建中它都不存在于其他类中。不使用扩展的 Kotlin 类始终是正确构建的。每当我运行程序时,这都会导致 NoClassDefFoundError (在后续构建中,第一个运行没有问题)。我已经尝试了所有方法,但我开始有点绝望了……这是整个项目的 build.gradle:

这是我尝试在其中使用 kotlin 的模块的 build.gradle

这是该模块的清单(或者更确切地说,它的标题,因为代码是专有的)

0 投票
0 回答
399 浏览

android - Gradle忽略了kotlin jvmname?

我正在构建一个 Android 应用程序并尝试使用 Gradle 为它编译一段 kotlin 代码。我有@JvmName,但似乎注释被忽略了,因此编译失败。

Gradle 告诉我:由于上述函数的签名,平台声明冲突。我错过了什么?我应该告诉 Gradle 明确处理注释还是其他什么?

正如@Ilya 所建议的,我在下面创建了最小的完整示例。这段代码可以编译。

我还检查了最小 SDK 版本是否可能导致问题,但对于最小的完整示例,我使用相同的最小 SDK 版本 21 并且可以编译。我private从函数名称中删除,然后使用@JvmName注释进行编译。

0 投票
2 回答
24583 浏览

android-studio - Kotlin Android 应用程序编译失败并显示消息:未解决的参考:kotlinx

我正在根据“Kotlin for Android Developers”一书中的说明测试一个基于 Kotlin 的基本 Android 应用程序。我正在使用 Android Studio 2.1.1。

我有以下 build.grade (项目:WeatherApp)设置:

我有以下 build.grade (Module:App) 设置:

我有以下 MainActivity.kt 代码:

这是我的 activity_main.xml 代码:

这是我的 strings.xml 代码:

我正在尝试使用可用的 Nexus 6 API 23 模拟器运行我的 MainActivity。我选中了“工具>> Android >>启用ADB集成”选项(我也尝试过关闭它)。模拟器似乎正在运行,但由于构建失败,我的应用程序似乎没有加载。运行模拟器时,我在“4:运行”窗口中看到以下消息:

我在“事件日志”窗口中看到以下内容:

我在 Gradle 控制台窗口中看到以下内容:

在消息部分,我看到以下内容:

如何让应用程序正确编译?

0 投票
3 回答
8475 浏览

android - 如何使用 kotlin 在 android 中初始化小部件

我已经开始学习在android中使用kotlin语言并在初始化我的按钮变量时遇到问题,因为在定义我的变量时,当我用空值初始化并在oncreate函数中绑定变量时它要求给出一些初始值它给出

kotlin.KotlinNullPointerException

这是我的代码

0 投票
1 回答
6980 浏览

java - Android本地VPN服务:无法得到响应

我对 Android 及其服务还很陌生。我正在尝试在我的应用程序中实现本地VPN 服务(使用 Kotlin 和 Java)。

问题

我的 VPN 服务取自ToyVpn Google 示例,并结合了123中的示例中的示例在本地使用(不连接到远程服务器)不起作用。


我的应用原则

我看到了这个这个SO 问题,但那里的答案不是很有见地,我找不到我的问题的解决方案。

所以应用程序非常简单:当用户单击主活动上的“是”按钮时,它应该转发所有数据包,当单击“否”时 - 阻止它。目的:将其用作防火墙,如下所示:

我的VPN应用的原理

我所有的代码都是用 Kotlin 语言编写的,但并不复杂,对于 JAVA 开发人员来说非常清楚。所以我希望上面的代码很清楚,因为它取自这里(谷歌提供的 ToyVpn 示例),只是转换为 kotlin。


我的配置和代码

为了在我的应用程序中启用 VPN 服务,我将我的AndroidManifest.xml放入<application>标记此设置:

我的MainActivity代码包含:

我的VpnFilter 类与ToyVpn服务类非常相似,但必须在没有任何身份验证、握手等的情况下在本地工作,因此我使用此类设置编辑了示例:

在我的运行函数中,我刚刚配置了隧道以连接到本地 IP 地址:

从而:

  1. VPN配置的设置与非常相似示例以及上述 SO 问题中的两个示例
  2. 我的数据包转发取自ToyVpn示例。

我知道我的 VPN 正在运行,因为如果我更改addRoute配置,我将无法访问 Internet。

所以我不知道我实际上做错了什么!如果我使用来自 ToyVpn 的数据包转发代码,每次新数据包到来时应用程序都会崩溃

更新

上述问题已解决,但我看到数据包正在发送,但我无法得到任何响应。我不知道为什么。


我的 VPN 服务的完整 JAVA 代码


日志猫输出

在我的LogCat面板中,当应用程序崩溃时,我得到了这个跟踪: