Tag: android

Kotlin懒惰属性和值重置:一个可重置的懒惰委托

所以我使用android的kotlin ,当充气的意见,我倾向于做到以下几点: private val recyclerView by lazy { find<RecyclerView>(R.id.recyclerView) } 这种方法将起作用。 但是,有一种情况会对应用程序造成影响。 如果这是一个片段,并且片段进入了后台, onCreateView将被再次调用,并且片段的视图层次将被重新创建。 这意味着懒惰启动的recyclerView将指向不再存在的旧视图。 解决方案是这样的: private lateinit var recyclerView: RecyclerView 并初始化onCreateView内的所有属性。 我的问题是,是否有任何方法来重置懒惰属性,以便他们可以再次初始化? 我喜欢初始化都是在一个类的顶部完成,有助于保持代码的组织。 具体的问题是在这个问题中发现: 回收后kotlin android碎片空回收站视图

xml onClick中的Kotlin不起作用

我学习kotlin,现在对我来说不是一会儿。 我有xml <ImageView android:id="@+id/aries" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:tag="1" android:onClick="clickItemHoro" android:src="@drawable/aries" /> 和片段 class ChooseYourHoroscope : Fragment(){ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.fragment_welcome_old, container, false) return view; } fun clickItemHoro(v: View?){ Log.e("clickItemHoro", v!!.tag.toString()) } } 当我点击按钮我有错误: 无法在父级或祖先中找到方法clickItemHoro(View)上下文android:onClick属性在视图类android.support.v7.widget.AppCompatImageView上定义了ID为'aries' 为什么发生? 代码变化简单,但它不工作,我不明白为什么

部署到Android,桌面和浏览器的单个Kotlin + libgdx代码库?

这可能吗? 我认为部署到Android和桌面不应该太难(因为Java已经可以做到了)。 我了解到,Kotlin也可以被转换成JavaScript。 这是否意味着我可以将相同的代码库部署到所有三个目标,或者我需要不同的浏览器代码? (当用Kotlin定位浏览器时甚至可以使用libgdx?)

Kotlin中可能导致内存泄漏的语言功能是什么?

我是Kotlin的新手,我喜欢Android的新语言,但是我很害怕在生产中使用它,并导致内存泄漏,是否有任何指导新的Kotlin开发人员显示可能导致内存泄漏,什么是解决方案预防呢?

Kotlin支持@ColorInt Java注释

Kotlin是否支持像@ColorInt这样的java注释,因为我不能让它工作。 我可以使用@ColorInt注释一个颜色,但是实际上并没有为这个注释获得lint检查。 例 fun setStatusBarColor(@ColorInt color){ window.setStatusBarColor(color) } 通过R.color.colorPrimary ,不显示棉绒。 应该用R.color.colorPrimary显示lint,不要用resources.getColor(R.color.colorPrimary)

在Kotlin for Android中编程时使用RxAndroid或RxKotlin?

我将开始在我的Android项目中使用反应式编程。 我使用Kotlin作为主要语言,现在我想申请Rx。 我的第一个选择是RxAndroid,但是我注意到有RxKotlin。 据我所知,两者都是从RxJava分支的,所以RxAndroid可能为android常见任务提供了一些API。 另一方面,RxKotlin支持开箱即用,并允许我避免与java混合使用kotlin。 在这种情况下,哪一个是首选的库?

Kotlin通用铸造到一个更具体的子类

所以我试图搞砸Kotlin,我有一个老的java MVP框架,在java中我们不得不将一个通用的接口转换为一个更具体的接口,比如public <P extends BaseContract.Presenter> P getPresenter() 我们将在一个子类中作为 @Override public AdvertisementContract.Presenter getPresenter() { return (AdvertisementContract.Presenter)super.getPresenter(); } 在Kotlin我要这样做: override fun getPresenter(): AdvertisementContract.Presenter { return super.getPresenter() as AdvertisementContract.Presenter } 有没有什么我可以做,而不需要在基础界面中修改泛型?

在Instant App中应用插件“kotlin-android”会导致“null不能转换为非空类型的com.android.build.gradleBasePlugin”

我一直在试图将最新公开发布的Android即时应用与Kotlin编程语言结合起来。 在使用以下(标准?)设置创建我的项目后,当我尝试构建应用程序时,出现错误消息“null不能转换为非空类型com.android.build.gradle.BasePlugin” 。 使用Kotlin可以很好的使用标准的“com.android.application”模块; 只有当我尝试在即时应用程序模块中使用它时,才会引发错误。 顶级build.gradle : buildscript { repositories { maven { url 'https://maven.google.com' } jcenter() } dependencies { classpath "com.android.tools.build:gradle:3.0.0-alpha1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-4" } } // … 应用程序模块build.gradle ,其中Kotlin工作: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' // This will work. android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { // … } buildTypes { release { […]

在kotlin如何做即时应用功能?

我需要在kotlin中做一个新的Android项目,支持即时应用程序功能,我可以做到这一点? 这是Google的一个已知问题,您无法使用kotlin插件和Instant Apps SDK进行Gradle同步。 难道这个问题依然存在?

无法获得null对象上的属性'kotlinOutputDir' – Kotlin和Spock

我想用Spock Framework来测试Kotlin类。 当我的项目中只有Java类时,一切正常。 但是,在版本1.1.51添加kotlin到我的项目后,测试stoped工作,现在我收到这样的错误: Error:Execution failed for task ':app:compileDebugUnitTestGroovyWithGroovyc'. > Cannot get property 'kotlinOutputDir' on null object 我正在使用Android Studio 3.0 Beta 7 这里是我的项目和模块build.gradle文件: 项目build.gradle // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.1.51' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-beta7' classpath 'org.codehaus.groovy:groovy-android-gradle-plugin:1.2.0' // […]