我使用kotlin-1.1.51和gradle,但加载了kotlin-runtime-1.1.3 环境: Windows10 IntelliJ IDEA Ultimate 2017.2.5 的build.gradle 依赖
在Swift中,我可以这样做: let ordinalFormatter = NumberFormatter() ordinalFormatter.numberStyle = .ordinal print(ordinalFormatter.string(from: NSNumber(value: 3))) // 3rd 但是我没有办法在Kotlin那么容易地做到这一点。 有没有这样的方式,或者我将不得不使用第三方库或写我自己的?
我在Android Studio中遇到了一个错误: Execution failed for task ‘:app:transformDexArchiveWithExternalLibsDexMergerForDebug’. > com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 我使用Gradle和Kotlin。 Android Studio 3.0.1. Windows 10 Pro 64. 我有研究这个主题,所以我尝试了一些解决方案,从这里 : 清理和重建项目。 没有变化。 将gradle中的“编译”更改为“实现”。 没有变化。 删除.gradle和build目录。 没有变化。 在gradle的defaultConfig中添加multiDexEnabled true 。 在这种情况下,我有另一个错误: Execution failed for task ‘:app:transformClassesWithMultidexlistForDebug’. > java.io.IOException: Can’t write [G:\work\myapp\app\build\intermediates\multi-dex\debug\componentClasses.jar] (Can’t read [C:\Users\Public\.gradle\caches\transforms-1\files-1.1\support-core-utils-27.0.2.aar\e1c9881d763269b67bf59dc03d19c305\jars\classes.jar(;;;;;;**.class)] (Duplicate zip entry [classes.jar:android/support/v4/content/PermissionChecker$PermissionResult.class])) 我的build.gradle : apply plugin: ‘com.android.application’ […]
我是新的kotlin和匕首。 我有一个小问题,我不怎么解决,我找不到解决方案。 所以这就是我所拥有的 @Module class AppModule (app: Application) { private var application: Application; init { this.application = app; } @Provides fun provideApplication(): Application? { return application; } @Provides fun provideResources(): Resources? { return application.resources; } } @Singleton @Component(modules = arrayOf(AppModule::class)) interface AppComponent: AppComponentBase { public class Initializer { private constructor(){} companion object { fun Init(app: […]
我有一个多项目的构建,而且更多的时候我发现自己锁定了整个项目的工件版本。 所以在我的根项目中,我定义了如下的东西: project.extra.set(“pkgVersions”, mapOf( “kotlin” to “1.2.0”, “jooq” to “3.10.2” )) val pkgVersions : Map by project.extra plugins { base kotlin(“jvm”) version “1.2.0” apply false } 虽然我可以在任何地方使用pkgVersions ,包括其他子项目: val pkgVersions by rootProject.extra jooq { version = pkgVersions[“jooq”] } 我无法在插件块中这样做: plugins { kotlin(“jvm”) version pkgVersions[“kotlin”] } 给我错误“pkgVersions不能在这个上下文中被隐式接收器调用,如果需要的话使用显式的”。 我假设这是因为隐式接收器应该可能是文件的JVM印象? 但相反,它使用PluginDependencySpec 。 试用this@自动完成只显示this@plugin 。 这只是我的一个猜测。 但是,我应该做什么的指针呢? 另外,虽然我们在这里,有没有办法在gradle-kotlin-dsl创建一个全局types ,例如: […]
对于Kotlin我绝对是新手。 我试图在Kotlin的后端做一个简单的对象,并在前端Vuejs上获得它。 我怎么能这样做(这是HeaderBar.kt的原始代码 ,我所有的尝试都被编译器拒绝): object HeaderBar { val computed = object { fun items(): Array { items.add(Item( “NY”, “Bill” )) return items } } data class Item( val city: String, val name: String ) } 在Kotlin方面? 并获取HeaderBar.vue上的items 。 我不确定,但是我是这样做的: {{item.city}} {{item.name}} export default path.to.HeaderBar
我用kotlin使用android持久库库房。 Dao看起来像这样 @Dao interface CountryDao { @Query(“SELECT * FROM countries”) fun loadAllCountried() : LiveData<List> @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertAll(products: List) @Query(“SELECT * FROM countries WHERE id = :countryId”) fun loadCountry(countryId: Int): LiveData @Query(“SELECT * FROM countries WHERE id = :countryId”) fun loadCountrySync(countryId: Int): CountryEntity } 这似乎对我很好,但我得到这个错误 Error: Each bind variable in the query must have […]
我有用Kotlin编写的所有代码构建多个项目Gradle。 有两个项目:普通和客户端。 子项目在中间文件夹,说“演示”。 所以文件夹结构是: project demo client build.gradle common build.gradle build.gradle gradle.properties settings.gradle settings.gradle: rootProject.name = ‘demo’ include ‘demo/client’ include ‘demo/common’ 客户端依赖于通用项目compile project(“:demo/common”) 。 共同项目中有一个扩展function: fun List<Future>.getAll(): Long { var count = 0L this.forEach { it.get() count++ } return count } 如果我尝试在客户端项目中使用它,我会在编译时得到Unresolved reference: getAllexception。 用法: … import org.sandbox.imdg.hazelcast.common.utils.getAll class CassLoader { fun loadCalcData(): Long { […]
在我的活动我有一个lateinit属性称为controller ,我的片段使用。 该属性在Activity.onCreate()初始化。 我的Fragment通过onAttach()获取其参考。 然后Fragment在Fragment.onCreate()调用myActivity.controller 。 通常controller首先在Activity.onCreate()初始化,然后添加Fragment 。 所以这工作得很好。 但是,当我的Activity被杀害,它试图重新创建自己和它的碎片。 这导致在Activity.onCreate()初始化之前调用Fragment.onCreate() Activity.onCreate() 。 这些是我现在看到的选项: 在super.onCreate()之前初始化controller (如果甚至可能的话) 将调用移动到myActivity.controller到更高的生命周期回调,如onViewCreated() 在Kotlin 1.2中有::controller.isInitialized 这里我最好的选择是什么?
我有BaseFragment : public abstract class BaseFragment extends Fragment implements BaseMvpView { private BasePresenter presenter; protected void syncLifeCycle(BasePresenter presenter) { this.presenter = presenter; this.presenter.onCreate(); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); //noinspection unchecked presenter.onAttachView(this); //it works with a warning } @Override public void onResume() { super.onResume(); presenter.onResume(); } @Override public void […]