上周,在我现在的Kotlin MVP项目中实施Dagger的时候,我正在使用KitKat 4.4.2在老式手机上进行测试(因为主要手机的维护,它仍然支持所有主要的function和东西)。 所以那一周我遇到了一些典型的问题,而不是一些不寻常的事情,通过调查提供的错误,或多或少地快速解决问题 终于,代码编译,当前的项目版本建成没有问题,没有运行与UI交互KitKat的重大错误。 但是,当我从维修中心拿走了带有Nougat 7.1.2的主电话并启动了应用程序时,我陷入了奇怪的DI相关问题。 之后,我也在mate的Marshmallow 6.0上推出了应用程序,并且又抓了一个,完全一样。 这个问题简单描述如下: 应用程序(成功)启动; 我能够操作通过上下文和fragmentManager注入提供的ViewPager / DrawerLayout / etc uifunction; 所有的服务也可以按照预期的方式进行注射。 当我抽动Activity的Presenter时,应用程序崩溃。 而现在最有趣的部分,这让我疯狂:所有可访问的类,不带来任何问题,通过构造注入注入。 但是,使用字段注入注入的Presenter实例在需要时不会被初始化 。 当然,我试图不使用lateinit修饰符,并注入它像@JvmField可空字段或没有它:结果是相同的 – 它根本不被注入。 由于问题与Activity有关,我有“自然约束”不使用主要构造函数注入。 这是一个例外情况,除了第一个字符串外,对我来说不是很有帮助。 kotlin.UninitializedPropertyAccessException: lateinit property presenter has not been initialized at .ui.common.view.BaseViewActivity.getPresenter(BaseViewActivity.kt:14) at .ui.main.view.MainActivity.onPlaceTypeClick(MainActivity.kt:143) at .ui.types.nearby.view.NearbyPlaceTypeItemViewHolder$bind$1.onClick(NearbyPlaceTypeItemViewHolder.kt:32) at android.view.View.performClick(View.java:5647) at android.view.View$PerformClick.run(View.java:22462) at android.os.Handler.handleCallback(Handler.java:754) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6205) at java.lang.reflect.Method.invoke(Native […]
我使用定义名为A的JSON模型类的Java库。 这个类包含很多属性,例如,从a到z命名的26个String属性,并没有它们的构造函数。 我想在Kotlin中扩展这个类,并使用新的JSON属性lateinit var aa: String (派生类将是B ),并且通过复制现有A实例的属性可以快速创建B的实例。 我可以序列化A并将结果JSON反序列化为B 有没有其他的快速解决方案,这样做没有序列化/反序列化,例如通过使用任何Kotin / Java方法或Intellij IDEA设施?
在我的Android项目中,我正在使用Kotlin和Android数据绑定。 它工作得很好,但现在我想更新Android Gradle插件到版本2.0.0-beta5。 在构建项目时,出现以下错误: 例外是在这里 java.lang.RuntimeException: failure, see logs for details. cannot generate view binders java.lang.NoSuchMethodError: kotlin.text.StringsKt.split$default(Ljava/lang/CharSequence;[Ljava/lang/String;ZII)Ljava/util/List; at android.databinding.tool.ext.ExtKt.androidId(ext.kt:76) at android.databinding.tool.writer.LayoutBinderWriterKt$readableName$2.invoke(LayoutBinderWriter.kt:99) at android.databinding.tool.writer.LayoutBinderWriterKt$readableName$2.invoke(LayoutBinderWriter.kt) at android.databinding.tool.ext.LazyExt.getValue(ext.kt:27) at android.databinding.tool.writer.LayoutBinderWriterKt.getReadableName(LayoutBinderWriter.kt) at android.databinding.tool.LayoutBinder.(LayoutBinder.java:202) at android.databinding.tool.DataBinder.(DataBinder.java:49) at android.databinding.tool.CompilerChef.ensureDataBinder(CompilerChef.java:81) at android.databinding.tool.CompilerChef.sealModels(CompilerChef.java:130) at android.databinding.annotationprocessor.ProcessExpressions.writeResourceBundle(ProcessExpressions.java:149) at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:82) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:154) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:139) at android.databinding.annotationprocessor.ProcessDataBinding.process(ProcessDataBinding.java:66) at org.jetbrains.kotlin.annotation.AnnotationProcessorWrapper.process(AnnotationProcessorWrapper.kt:136) at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:793) at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:722) at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1700(JavacProcessingEnvironment.java:97) at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1029) […]
我有两个问题 1)我的项目包含dagger2,retofit2,kotlin v1.0.21,rxJava2,OkHttp3我想在我的项目上实现SocketIO如何实现? 2)我尝试了几种方式,但无法连接socketIO所以我尝试下面给出的代码示例代码,但仍然无法连接套接字..请提前帮助thanx package com.easymakers.myapplication import android.os.Bundle import android.support.design.widget.Snackbar import android.support.v7.app.AppCompatActivity import android.view.View import io.socket.client.IO import io.socket.client.Socket import io.socket.emitter.Emitter import kotlinx.android.synthetic.main.activity_main.* import javax.net.ssl.SSLContext class MainActivity : AppCompatActivity() { private var socket : Socket? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar) fab.setOnClickListener { view -> connect(view) // connect1() } } private fun […]
我有2个类让我们叫他们A和B,我也有一个function,将A的实例转换为B的实例。 我导致问题的代码基本上是: fun fromAtoB(a: A) = B (fb1 = a.fa1, fb2 = a.fa2, fb3 = a.fa3) val listOfA: List = … val listOfB: listOfA.map { fromAtoB(it) } 这不会建立由于行: fromAtoB(it) 随着错误: 由于错误types检查已经遇到了递归问题。 最简单的解决方法:明确指定声明的types 我不知道我能做些什么来解决这个问题,Google没有提供似乎适用于我的问题的结果。 提前感谢任何帮助! 编辑: 这里是实际的源文件: TenantEntity.kt – https://pastebin.com/mdSWiA1Y (该文件的第51行是问题) TenantDto.kt – https://pastebin.com/83UP9Cwe ReceiptEntity.kt – https://pastebin.com/BjP2ikg9 ReceiptDto.kt – https://pastebin.com/Kpt9dSAp
我正在创建一个音乐播放器应用程序,其中有一个回收视图和许多碎片。 我在MainScreenFragment.kt文件中遇到错误。 我检查了错误日志,错误的显示是: ******引起:kotlin.TypeCastException:null不能转换为非nulltypeskotlin.collections.ArrayList / * = java.util.ArrayList * / 在com.thepanku.musicplayer.Fragments.MainScreenFragment.onCreateView(MainScreenFragment.kt:60)at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)****** 错误的原因是什么,任何帮助都是可观的。 我厌倦了这个错误。 这里是代码: class MainScreenFragment : Fragment() { var getSongList : ArrayList? = null var nowPlayingBottomBar: RelativeLayout?=null var playPauseButton: ImageView?=null var songTitle: TextView?=null var visibleLayout: RelativeLayout?=null var noSongs: RelativeLayout?=null var recyclerView: RecyclerView?= null var myActivity:Activity?=null var _mainScreenAdapter : MainScreenAdapter?=null override fun onCreateView(inflater: LayoutInflater?, […]
我开始使用Kotlin,并试图实现一个parcelable对象,它接收一个字符串列表作为次要构造函数的参数。 但是,我收到错误: 在超类构造函数被调用之前,不能访问“” 这里是我的代码: class StringChecker(val stringList : List) : Parcelable { var mStringList = stringList constructor(parcel: Parcel) : this(parcel.readStringList(mStringList)) override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeStringList(mStringList) } override fun describeContents(): Int { return 0 } companion object CREATOR : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): StringChecker { return StringChecker(parcel) } override fun newArray(size: […]
我正在做一个列表查看什么时候点击调用函数。 I want to get function is async or sync 。 阻止什么时候是异步的。 甚至我想知道how attach async mark to kotlin lambda expression 。 class FunctionCaller_Content(text: List, val function: List Unit )? >? = null) /* I want both of async, sync function. */ { fun isAsnyc(order: Int): Boolean = // how to get this lambda expression{function?.get(order)} is […]
我需要抓取已过期/自签名证书的公司内部网站。 没有人会为该主机配置有效的证书,所以我必须使用不安全的连接。 curl有 – 为此目的, Scala finagle库有.tlsWithoutValidation()模式。 问 :是否有一个Kotlin库有类似的选择? UPD :到目前为止我使用燃料与在这里find的javish解决方法,但仍然在寻找更好的方法.. fun useInsecureSSL() { // Create a trust manager that does not validate certificate chains val trustAllCerts = arrayOf(object : X509TrustManager { override fun getAcceptedIssuers(): Array? = null override fun checkClientTrusted(chain: Array, authType: String) = Unit override fun checkServerTrusted(chain: Array, authType: String) = Unit }) […]
我是新来的Android和新的Kotlin(来自iOS Swift开发)。 我有一个活动,有一个片段,里面的片段是一个RecyclerView。 当用户点击RecyclerView中的一行时,我想显示一个对话框并采取一些行动。 在适配器中,我有CustomViewHolder和onClickListener。 从那里,我可以捕捉用户轻松点击的行。 但是,如何将这些信息传递回片段,以便我可以采取行动/显示一个对话框? 谢谢!