我想改变正面按钮的颜色。 我怎样才能做到这一点? AlerDialog: fun onSomeClicked(view: View) { val dialog: AlertDialog.Builder = AlertDialog.Builder(view.context) dialog.setTitle(“SomeText”) .setMessage(“SomeMessage”) .setPositiveButton(view.context.getString(R.string.ok_dialog)) { p0, p1 -> onCheckPassword(view) } .setNegativeButton(context.getString(R.string.cancel_dialog)) { p0, p1 -> } .create() .show() } 谢谢! (我的问题是在科特林,在科特林做。)
运行这行代码时,出现Out Of Memoryexception private val TAG = KotlinFilePicker()::class.java.canonicalName 并禁用时,它工作正常 Throwing OutOfMemoryError “Failed to allocate a 170 byte allocation with 68 free bytes and 68B until OOM” (recursive case) 01-04 00:14:55.044 20584-20584/com.androidbuffer.kotlinfilepickersample E/art: “main” prio=5 tid=1 Runnable 01-04 00:14:55.044 20584-20584/com.androidbuffer.kotlinfilepickersample E/art: | group=”main” sCount=0 dsCount=0 obj=0x7581c250 self=0xb4f07800 01-04 00:14:55.044 20584-20584/com.androidbuffer.kotlinfilepickersample E/art: | sysTid=20584 nice=-11 cgrp=apps sched=0/0 […]
只是好奇:在Kotlin,我很想得到一些可以被懒惰初始化的val,但是有一个参数。 那是因为我需要一些很晚才创建的东西来初始化它。 具体来说,我希望我有: private lateinit val controlObj:SomeView 要么: private val controlObj:SomeView by lazy { view:View->view.findViewById(…)} 接着: override fun onCreateView(….) { val view = inflate(….) controlObj = view.findViewById(…) 或者在controlObj.initWith(view)情况下controlObj.initWith(view)或类似的东西: return view 我不能by lazy使用by lazy因为by lazy不会接受初始化时要使用的外部参数。 在这个例子中 – 包含的view 。 当然,我有lateinit var但如果我能确保它只是在设置后才能读取,我可以在一行中完成。 是否有一个非常干净的方法来创建一个只读的variables,只初始化一次,但只有当其他一些variables出生? 任何init once关键字? 在init之后,编译器知道它是不可变的? 我意识到潜在的并发问题,但如果我敢于在init之前访问它,我当然应该被抛出 。
这里是示例 if (bar == null) { // do something } 与 bar ?: run { // do something. } 哪一个是最佳实践? 什么是变异财产? 第一个不和变异的财产工作?
我刚刚下载了Android Studio和Java JDK。 所以,当我创建我的应用程序,它启动文件,如MainActivity.kt而是我想用/ java,我不知道如何解决这个问题。
假设我有一个下列类的对象列表。 class Contact( val name: String // … ) 我想检索一个映射名称到它的次数的映射Map 。 在一个基于SQL的数据库,我会查询: SELECT name, count(*) FROM Contact; 在Kotlin中使用更高阶函数的最好方法是什么?
根据文档cancelChildren应该取消一个协程的孩子,但离开父母不受影响(“这个工作本身的状态不受影响。”)但是,如果我有代码 val outer = launch { try { launch (coroutineContext) { try { // work here } catch (ex: Exception) { println(“In inner catch”) } finally { println(“In inner finally”) } } delay(5000) // so the outer job is running when I cancel it } catch (ex: CancellationException) { println(“In outer catch”) } finally { […]
我在我的一个Android类中使用了kotlin ,并且在尝试从Bundle获取额外信息时,似乎有时会popupIllegalStateException kotlin 。 keyOrTag = bundle.getString(“tag”) val是这样宣布的 val keyOrTag: String 不幸的是,我没有完整的堆栈跟踪,因为我从GP控制台注意到了这一点。
我用Android studio 3.0创建了新的Kotlin项目。之后,我创建了一个Java活动,并将其更改为Manifest中的主要活动。启动活动后,我没有看到任何视图。但是,当我尝试加载kotlin活动时,视图是可见的。任何建议可以欣赏 Kotlin活动 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } Java活动 public class HomeActivity extends AppCompatActivity { @Override public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); setContentView(R.layout.activity_main); } } 清单文件
假设我们有一些用protoc生成的数据类。 谷歌toString()吸引人的原因很多,它没有太多的人类可读性,甚至在代表性的螺丝钉和许多不希望多行日志的工具表示断行。 所以问题是: 我们如何重新定义像这样的类的自定义toString()? 我试过覆盖(或者可能隐藏?)原始toString()与这样的扩展function fun Messages.DataClass.toString(): String { return “some custom logic” } 但它不会选择扩展function