Tag: 安卓

只有最后一个元素添加到Android的RecyclerView(Kotlin)

我将7个物品的清单传递给recyclerview,它只是绑定最后一个。 通过使用日志我cal看到getItemCount()返回7,但onBindViewHolder只被调用一次。 我知道(再次通过日志记录),我传递给适配器的列表是完整的列表。 你能帮我找出为什么只显示最后一个元素,而不是整个列表。 谢谢。 活动代码: class HabitActivity : AppCompatActivity() { var adapter: ListHabitsAdapter? = null private var habitList: ArrayList? = null private var habitListItems: ArrayList? = null private var layoutManager: RecyclerView.LayoutManager? = null var dbHandler:HabitDataAdapter? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_habit) // Initialize the Class global variables //val mContext = applicationContext […]

Android – 以下类的超types无法解析 – (Room Persistant Library,Android Library Module)

在我的Android项目(Kotlin)中,我想为我的DATA LAYER使用Room持久性库。 但是当我添加房间持久性库的依赖关系突然生成项目开始失败。 我正在收到的错误: 这是我的项目级别 build.gradle // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext { globalCompileSdkVersion = 26 globalMinSdkVersion = 19 globalTargetSdkVersion = 26 kotlin_version = ‘1.2.10’ support_version = “27.0.2” constraint_layout_version = “1.0.2” view_animator_version = “1.0.5” junit_version = “4.12” runner_version = “1.0.1” espresso_core_version = “3.0.1” room_version […]

onCreate在抽象父活动no kotlin中调用

我有MapActivity的一个孩子的活动。 class RecordingActivity : MapActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.d(“RecirdingActivity”, “InitializeMap”) //called } override fun getView(): Int { return R.layout.activity_recording } } 我从我的主要活动中调用这个活动: fab.setOnClickListener { Log.d(“MainActivity”, “fabClick”) //called startActivity(intentFor()) } 我有抽象活动: abstract class MapActivity: AppCompatActivity(), OnMapReadyCallback { override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { super.onCreate(savedInstanceState, persistentState) setContentView(getView()) initializeMap() Log.d(“MapActivity”, “InitializeMap”)//not called } […]

使用Android Studio 3.0 beta7版本时,Kotlin注释处理器会导致编译时错误

我正在使用Android Studio 3.0 Beta 7编译Android项目,使用Kotlin 1.4-2和Room Persistence Library 1.0.0-beta1。 这是我的Gradle文件的一部分,我添加了房间依赖关系: implementation “android.arch.persistence.room:runtime:1.0.0-beta1” kapt “android.arch.persistence.room:compiler:1.0.0-beta1” 编译时,我收到以下错误: 警告:警告:注释处理器“android.arch.persistence.room.RoomProcessor”支持的源版本“RELEASE_7”小于“源1.8” 添加stacktrace /调试标志来编译选项后,这是我得到的错误: 错误:org.jetbrains.kotlin.kapt3.diagnostic.KaptError:批注处理时出错 10:08:03.727 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 10:08:03.727 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]失败:生成失败,出现exception。 10:08:03.727 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 10:08:03.727 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] *什么错误:10:08:03.727 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]执行失败的任务’:app:kaptDebugKotlin’。 10:08:03.727 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]>内部编译器错误。 10:08:03.728 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 10:08:03.728 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Exception is:10:08 :03.728 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException:任务’:app:kaptDebugKotlin’的执行失败。 10:08:03.728 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)10:08:03.728 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] […]

为什么这个Kotlin扩展失败Android Studio Lint检查?

在Android开发中,当且仅当设备的SDK大于或等于最小版本时,才需要执行一段代码。 为了避免这个代码的往往丑陋和重复的性质,我创建了下面的扩展。 inline fun runWithMinSdk (minVersion: Int, func: () -> T) { if (android.os.Build.VERSION.SDK_INT >= minVersion) { func() } } 没有什么太花哨,似乎在纸上做的伎俩。 但是 ,当我使用这样的代码: fun myFun { runWithMinSdk(Build.VERSION_CODES.O) { exampleMethodThatRequiresOreo() } } Android Studio引发了一个hissy fit,它失败了Lint检查,要么抑制myFun() ‘NewApi’警告,要么包装runWithMinSdk块if android.os.Build.VERSION.SDK_INT … etc 有没有更好的方式来实现这个function,使其通过林特检查或使用扩展是不可能的这是可能的吗?

如何在内核类的kotlin的初始化两个构造函数?

如何纠正init二级构造函数? 我试试这个 class Builder { constructor(view: View) constructor(activity: Activity) fun build() = ShakeBuilder(this) …. class ShakeBuilder(val view: View) { private constructor (builder: Builder) : this(builder.view) { durationM = builder.durationM translation = builder.translation } private constructor (builder: Builder) : this(builder.activity) { durationM = builder.durationM translation = builder.translation }

如何设置Kotlin的财产价值

我试图设置一个属性值,如下面的代码片段。这个问题没有回答这个问题。 var person = Person(“john”, 24) //sample_text.text = person.getName() + person.getAge() var kon = person.someProperty person.someProperty = “crap” //this doesn’t allow me to set value kon = “manulilated” //this allows me to set the value sample_text.text = kon class Person(val n: String, val a: Int){ var pname: String = n var page: Int = a […]

将lambda直接分配给inheritance的抽象方法

我是一个BroadcastReceiver的子类,并希望能够指定一个lambda作为输入参数,并直接将其分配为用作“onReceive”的实现。 这是我的代码的样子: class Receiver(val callback: (Context?, Intent?) -> Unit): BroadcastReceiver(){ override fun onReceive(context: Context?, intent: Intent?) = callback fun itWorks(context: Context?, intent: Intent?) = callback } 我想能够像这样实例化它: val myReceiver = Receiver({context: Context?, intent: Intent?-> { println(“Intent received: $intent”) }}) 要么 val myReceiver2 = Receiver(::implementationHere) 但是,我得到以下错误: 错误:(2,18)“onReceive”的返回types不是被重写的成员的公共抽象types的子typesonReceive(p0:android.content.Context!,p1:android.content.Intent!): kotlin.Unit在android.content.BroadcastReceiver中定义’ 有趣的是,当将这个lambda分配给“itWorks”方法时,我没有收到错误。 你能告诉我这两种方法有什么区别吗? 为什么它与一个而不是另一个协同工作? 据我所知,这两种方法的签名是相同的。 (我来自Java8的背景,在哪里(就lambdaexpression式而言)你所关心的只是具有相同的方法签名) 当然这是有效的,但我更喜欢另一种方式: class Receiver2(val […]

Android Studio 3.0 Canary 1:Gradle同步错误

我在我的Kotlin项目中遇到这个错误: 这是我的应用程序的Gradle文件: 除了添加Kotlin和Anko的依赖外,我还没有真正做过这个项目。 不知道发生了什么…

未能在新的Android Kotlin项目上运行Instrumented测试

我刚刚创建了一个新的Android应用程序与Kotlin支持。 当我试图运行默认的仪器测试时,它不会运行,并显示给我这个消息: Class not found: “oussaki.com.pos.ExampleInstrumentedTest”Empty test suite. 这是我试图运行的Instrumented测试类: @RunWith(AndroidJUnit4::class) class ExampleInstrumentedTest { @Test fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getTargetContext() assertEquals(“oussaki.com.pos”, appContext.packageName) } }