Tag: kotlin android extensions

无法减少kotlin中的布尔值列表

我试图映射到布尔值并减少kotlin。 这是我的代码 class Model{ fun isEmpty() : Boolean } list.asSequence().map { model -> { model.isEmpty() } }.reduce { acc, next -> (acc && next)} 但编译器给了我一个错误告诉 Type mismatch required () Boolean? but found Boolean 我究竟做错了什么? 我希望我没有做任何在概念上的错误

Java to Kotlin转换器和可空方法参数

我遇到了一个Java到Kotlin转换器不能将方法参数标记为可空的情况,使我失败的案例。 示例:使用registerActivityLifecycleCallbacks跟踪活动生命周期: registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) {} @Override public void onActivityStarted(Activity activity) {} @Override public void onActivityResumed(Activity activity) {} // … other overriden methods }); 将此代码粘贴到Kotlin结果中: registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks { override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle) {} override fun onActivityStarted(activity: Activity) {} override fun onActivityResumed(activity: Activity) {} override fun […]

Kotlin Android扩展和保留片段

我在项目中使用Kotlin Android扩展 ,遇到了一些我无法理解的行为。 我使用这段代码来保留我的片段: val fragment = fragmentManager.findFragmentByTag("hello") ?: HelloFragment() fragmentManager.beginTransaction() .replace(R.id.fragment_container, fragment, "hello") .commit() 这是保留的Fragment : import kotlinx.android.synthetic.hello.* public class HelloFragment : Fragment() { val text = "Hello world!" override fun onCreate(savedInstanceState: Bundle?) { super<Fragment>.onCreate(savedInstanceState) setRetainInstance(true) } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater?.inflate(R.layout.hello, container, false) } override fun […]

kotlin是功能性的还是程序性的?

除了面向对象,它可以支持程序和函数式编程风格吗? 我想开发一个使用Android Studio的Android应用程序,这样我就可以探索kotlin提供的各种编程风格,这将真正帮助我探索这种新的语言。 感谢您抽出宝贵的时间阅读/回答这个问题,对不起,如果我听起来noob,因为我是一个编程世界的初学者!

Gradle忽略kotlin jvmname?

我正在构建一个Android应用程序,并试图用Gradle编译一段kotlin代码。 我有@JvmName ,但似乎注释被忽略,因此编译失败。 @JvmName("setOptionsForPairs") private fun setOptionsFor(field: JSONObject, options: MutableList<Pair<Int, String>>, spinner: Spinner?){ options.plusAssign(json2pairs(field.getJSONObject("options"))) setOptions(options.map { it.second }, spinner) } private fun setOptionsFor(field: JSONObject, options: MutableList<String>, spinner: Spinner?){ val candidates = field.getJSONArray("options") for (i in 0..candidates.length() – 1) options.add(candidates.getString(i)) setOptions(options, spinner) } Gradle告诉我:平台声明由于上述函数的签名而发生冲突。 我错过了什么? 我应该告诉Gradle明确注意注释还是别的吗? 正如@Ilya所建议的,我创建了一个最小的完整示例。 这个代码是可以编译的。 import android.support.v7.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() […]

Android Kotlin Extension超级通话

我是一个Java Android开发人员,我正在接近Kotlin 我已经定义了以下类: open class Player : RealmObject() { … } 我定义了以下两个扩展,一个用于通用RealmObject类,另一个用于特定的Player类: fun RealmObject.store() { Realm.getDefaultInstance().use { realm -> realm.beginTransaction() realm.copyToRealmOrUpdate(this) realm.commitTransaction() } } fun Player.store(){ this.loggedAt = Date() (this as RealmObject).store() } 我想要的是,如果我在任何RealmObject对象上调用RelamObject.store()则将调用RelamObject.store()扩展名,但是如果我在Player实例上调用RelamObject.store()将被调用的扩展名将是Player.store() 。 (现在没问题)我不想复制粘贴相同的代码,我喜欢写更少的重用。 所以我需要在内部的Player.store()将调用通用的RealmObject.store() 我知道了。 我写在那里的代码实际上按预期工作:D 我所问的是(仅仅因为我个人直觉而写的): 这是好方法吗? 还是有更好的办法? 谢谢

在Kotlin的自定义类中访问TextView

我是Android和Kotlin的新手,我面临着一个我无法解决的问题。 我有一个activity_main.xml文件,其中包含一个seekBar和一个TextView 。 当我改变seekBar我想在TextView实时显示更改的值。 为了学习新事物和练习Kotlin,我创建了一个包含Seekbar.OnSeekBarChangeListener的新类,该类对seekBar变化作出反应。 但问题是,当我把TextView设置为新的seekBar值,这是一个findViewById NullPointException 。 FATAL EXCEPTION: main Process: kotlindemo1.kristof.kotlin_1demo, PID: 24410 java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference at android.app.Activity.findViewById(Activity.java:2090) at kotlindemo1.kristof.kotlin_1demo.seekB._$_findCachedViewById(seekB.kt:0) at kotlindemo1.kristof.kotlin_1demo.seekB.onProgressChanged(seekB.kt:15) at android.widget.SeekBar.onProgressRefresh(SeekBar.java:93) 这是MainActivity类: package kotlindemo1.kristof.kotlin_1demo import android.app.Activity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* open class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) […]

Kotlin – 什么是没有身体的阶级的使用?

在Kotlin中,头部和身体都是可选的; 如果班级没有身体,可以省略花括号。 所以我们可以定义类, class Empty 这种类的用途是什么?

如何在Android Activity上使用Kotlin扩展函数进行空检查

我是Kotlin的新手,并试图将我们现有代码库中的许多Android Util方法之一转换为Kotlin扩展函数。 这是Kotlin代码: fun Activity?.isAlive(): Boolean { return !(this?.isFinishing ?: false) } 这意味着等同于这个Java方法: public static boolean isAlive(Activity activity) { return activity != null && !activity.isFinishing(); } 但是,当Activity为null时,我仍然在Kotlin代码中获得NPEs 。 任何想法,我要去哪里错了?

我应该为Android Studio 3.0 Canary 1使用哪些kotlin版本?

我有一个中型Kotlin项目,使用anko和kotlin android扩展,特别是资源ID的综合属性。 他们都停止工作,我的升级到Android Studio 3.0 Canary 1.虽然看起来他们也已经停止为AS 2.3.2工作。 这里是相关的顶层构建脚本: buildscript { ext.kotlin_version = '1.1.2' repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-alpha1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" … 在我的应用程序模块的构建脚本中,相关的部分是: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' repositories { mavenCentral() jcenter() } android { compileSdkVersion 25 buildToolsVersion '25.0.2' dataBinding { enabled = true } } dependencies { […]