我最近把我的项目切换到Kotlin,并检查了我发现的所有预编译错误。 然后我去建立该项目,我收到这个错误。 错误:执行任务’:app:transformResourcesWithMergeJavaResForDebug’失败。 java.io.FileNotFoundException:D:\ Work \ known-tek \ Knew_Tek \ app \ build \ intermediates \ transforms \ mergeJavaRes \ debug \ 0 \ META-INF \ LICENSE(Access is denied) 我正在使用Android Studio 3.0 ,这真的是新的,但从我可以告诉这不应该发生。 我已经深入到文件结构,并确认该文件夹确实存在。 唯一的例外是LICENSE文件夹是小写而不是上部。 我不相信这会影响任何事情,但我可能是错的。
我是kotlin和kodein开发新的。 我想将数据注入一个简单的类,它不扩展。 我有我的MainActivity扩展KodeinAppCompatActivity() ,我的片段,它扩展KodeinSupportFragment()从我的简单类CallType调用一个函数。 但是这个函数必须改变其他简单类ConnectivitySate的布尔值。 我不想使用静态值。 下面,我的代码: class App : Application(), KodeinAware { override val kodein by Kodein.lazy { import(autoAndroidModule(this@App)) bind() with instance(CallType()) bind() with instance(ConnectivityState()) bind() with instance(ContactData()) } override fun onCreate() { super.onCreate() registerActivityLifecycleCallbacks(androidActivityScope.lifecycleManager) } 主要活动 : class MainActivity : KodeinAppCompatActivity() { 我的片段: class JournalFragment : KodeinSupportFragment(){ private val callType: CallType by instance() […]
我创建了一个映射,它将存储将在稍后调用的函数,其types如下所示: Map Unit> 事情是,我不知道每个函数被存储有多少个参数,或者这些参数的types。 目前地图typesMap Unit>将只允许我存储没有参数和返回types为Unit的函数。 我该如何表示一个函数types,它可以让我存储具有未知数量的参数和未知的返回types的函数,但它仍然必须是一个被存储的函数。 像这样的事情是我正在寻找的东西: Map V> 我如何在Kotlin中表示这种functiontypes?
我正在创建一个RecyclerView Adapter,在这个链接Android Recyclerview中加载无限数据 。 当我们想要显示加载指标时,我们写下面的代码: contacts.add(null); contactAdapter.notifyItemInserted(contacts.size() – 1); 我正在使用kotlin,不希望这个空对象被添加到列表中,也不希望在RecyclerView之外加载指示器(意味着加载指示器必须是列表中的一个项目)。 有什么办法,我们不需要添加一个空对象? 几乎互联网上的每个例子都使用这个空对象来显示加载指示符。 请显示任何代码示例或任何其他相关的博客文章来帮助。 谢谢。
我有一个简单的应用程序写在Kotlin有一个BottomNavigationView。 这个想法是有一个单一的活动(MainActivity)与BottomNavigationView的每个选项卡加载片段。 我已经创建了一个片段,当选择一个选项卡(HomeFragment)时,我想加载一个片段,并且当活动选项卡更改时,已经在BottomNavigationView的图标下更改了文本。 现在我想在改变标签时膨胀/加载片段。 我怎么去做这个? MainActivity.kt: class MainActivity : AppCompatActivity() { private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item -> when (item.itemId) { R.id.navigation_enrollments -> { message.setText(R.string.title_enrollments) return@OnNavigationItemSelectedListener true } R.id.navigation_timeline -> { message.setText(R.string.title_timeline) return@OnNavigationItemSelectedListener true } R.id.navigation_home -> { message.setText(R.string.title_home) return@OnNavigationItemSelectedListener true } R.id.navigation_alerts -> { message.setText(R.string.title_alerts) return@OnNavigationItemSelectedListener true } R.id.navigation_profile -> { message.setText(R.string.title_profile) return@OnNavigationItemSelectedListener […]
我有一个JSON文件的期望定义: [ { “httpRequest”: { “path”: “/example”, “method”: “POST”, “headers”: [ { “name”: “Content-Type”, “value”: “application/json” } ], “body”: { “type”: “JSON_SCHEMA”, “value”: “schema/example.json” } }, “httpCallback”: { “callbackClass”: “com.package.ExampleCallback” }, “times”: { “unlimited”: true } } ] …和一个example.json文件 – 具有实际的模式定义。 现在我希望能够从JSON期望中引用/读取模式定义文件,因为手动将JSON模式定义复制到期望文件中往往是/看起来不可读)。 我以前用JsonSchemaBody.jsonSchemaFromResource在Java / Kotlin中完成了这个JsonSchemaBody.jsonSchemaFromResource ,但不知道是否可以在JSON中完成: @Component class ExampleExpectation(val callback: ExampleCallback, val client: MockServerClient) : […]
在Kotlin项目中,什么是适当的Gradle脚本来确保我的类将被编译为字节代码ver 52(Java 8)? 出于某种原因,我的类被编译为ver 50(Java 6),即使我设置了源和目标兼容性。 至少这是Idea在构建项目之后从目录build/classes/…打开文件时显示的内容。 我目前的设置是这样的。 buildscript { ext { kotlinVersion = ‘1.0.5-2’ springBootVersion = ‘1.4.2.RELEASE’ } repositories { mavenCentral() } dependencies { classpath(“org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}”) classpath(“org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}”) } } apply plugin: ‘kotlin’ apply plugin: ‘org.springframework.boot’ tasks.withType(JavaCompile) { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } ## I also tried this and it hasn’t helped #sourceCompatibility = […]
下面的代码在kotlin中: Any().javaClass 具有java.lang.Object值。 这是否意味着Any和Object是相同的类? 他们有什么关系?
我使用IntellJ版本2017.2.5构建Ktor应用程序。 我也想用Spek来测试应用程序。 我从一个非常简单的文件开始, import org.jetbrains.spek.api.Spek import org.jetbrains.spek.api.dsl.given import org.jetbrains.spek.api.dsl.it import org.jetbrains.spek.api.dsl.on import kotlin.test.assertEquals class SampleSpec : Spek({ given(“some context”) { on(“executing some action”) { it(“should pass”) { assertEquals(2, 2) } } } }) 当我右键点击运行测试,我得到以下错误: Feb 08, 2018 2:50:32 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable WARNING: TestEngine with ID ‘spek’ failed to discover tests java.lang.NoClassDefFoundError: org/junit/platform/engine/discovery/ClasspathSelector at org.jetbrains.spek.engine.SpekTestEngine.resolveSpecs(SpekTestEngine.kt:48) at […]
首先,我是Android / Java / Kotlin开发的新手。 我正在使用Retrofit2从Udacity API检索数据。 我可以看到Logcat中的响应,但是当我尝试在RecyclerView中显示时,只有一个空白屏幕。 我认为错误是在MainActivity中,但我仍然无能,需要帮助。 我的模型类 class Course(var title: String, var subtitle: String, var key: String, var instructors: List, var expected_learning: String, var required_knowledge: String) class Instructor(var name: String, var bio: String) 我的界面 interface ApiServiceInterface { @GET(“courses”) fun list() : Call } 我的适配器 class CourseAdapter(val listCourses: ArrayList, val context: Context) : […]