Tag: 安卓

智能投射不可能,因为实例是可变属性

我试图在Kotlin中创建一个单例,并且遇到问题,因为我得到了一个smart cast to PresenterManager is impossible because instance is mutable property that could have been changed at this time 。 这似乎是一个非常标准的方式来做一个单身人士。 为什么不让我,我怎么能解决它? PresenterManager { //some code …. companion object { private val PRESENTER_ID = “presenter_id” private var instance: PresenterManager? = null fun getManager(): PresenterManager { if (instance == null) { instance = PresenterManager(10, 30, TimeUnit.SECONDS) […]

如何在Android Studio中为Kotlin提取字段

在Android Studio中,我想从像Java这样的类范围中的方法中提取字段toolbar val toolbar = findViewById(R.id.my_toolbar) setupToolBar(toolbar) 我把光标放在工具栏上,右键点击find提取字段的function,但没有运气。 (Refactor – > Extract – > No Fields Extract) 感谢任何意见或评论。

编写JS和Java的代码

我正在尝试编写一个代码模块,可以用于JavaScript的客户端浏览器和Kotlin的Java桌面应用程序和Android应用程序。 主要的逻辑操纵一个位图/ PNG文件。 有没有一种方法可以编写一个可以使用的接口,并为JS和Kotlin提供不同的接口实现? 例如,用Java(使用BufferedImage)和JS(使用Canvas)为图像编写包装类(从图像加载,设置像素,获取像素)? 我在这里是新的,所以如果有什么不合理或需要更多的澄清,请让我知道!

评估expression式操作期间发生exception:

我正在Android Studio上开发一个使用kotlin的应用程序,它在尝试调试对象时给我提供了下面的错误。 我想只有在使用像4.3上运行的samsung s3这样的旧设备时才会出现这种情况,因为当我尝试重现与在7.0和8.0上运行的其他设备相同的进程时,它不会发生。 以前有谁见过这样的东西? 这是一个错误或配置变化必要,我不知道? 我的kotlin版本:1.1.61 编辑:我创建了一个错误报告https://issuetracker.google.com/issues/69821974

MapOnClickListener似乎不工作

我正在使用Kotlin和GoogleMap编写应用程序。 我有地图,我试图设置一个只记录消息的OnMapClick监听器。 构建是好的,但是当我点击地图时,没有任何反应。 我已经查找了文档,但是我没有发现任何关于这样的问题。 这里的地图代码: class map : FragmentActivity(), OnMapReadyCallback { private var mMap: GoogleMap? = null override fun onMapReady(googleMap: GoogleMap) { mMap = googleMap mMap?.setOnMapClickListener { GoogleMap.OnMapClickListener { p0 -> Log.d(“Map”, p0.toString()) } } } } 我在Java中发现了很多关于GoogleMap的文档,但是Kotlin没有,所以我自己试了一下。 感谢您帮助我find这个代码有什么问题。

kotlin-kapt插件不使用“kapt.generateStubs”

我最近从Android Studio 2.3更新到3.0,kotlin 1.1.4到1.1.51 。 现在我在我的gradle控制台中看到这条消息: kotlin-kapt插件不使用“kapt.generateStubs” 我有这在我的build.gradle让我的项目使用注释处理一些库工作: kapt {generateStubs = true} generateStubs行不再需要,可以安全地删除? 还是有另一个行动,我应该采取消除上述警告消息?

使用Anko访问活动的视图

我知道我可以使用Anko的id属性来识别视图: class MainActivityUI : AnkoComponent { override fun createView(ui: AnkoContext) = with(ui) { frameLayout { textView { id = R.id.text } } } } 然后使用find()函数(或使用Kotlin Android扩展)在Activity获取它: class MainActivity : AppCompatActivity() { private val textView by lazy { find(R.id.text) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) MainActivityUI().setContentView(this) textView.text = “Hello World” } } 但我觉得我失去了一些东西; README中唯一提到find函数或Kotlin Android扩展的地方在标题为支持现有代码的部分: […]

为什么我得到错误java.lang.IllegalStateException:实例未初始化?

我得到错误 java.lang.IllegalStateException:实例未初始化 你可以在https://www.dropbox.com/s/gxeok1fyttsl54u/MyMirror.zip?dl=0 在operator fun getValue(thisRef: Any?, property: KProperty)… ,似乎代码operator fun getValue(thisRef: Any?, property: KProperty)…会导致错误。 但代码是来自示例代码,我几乎不会改变,你可以在https://github.com/antoniolg/Kotlin-for-Android-Developers/blob/master/app/src/main/看到源代码。 的Java / COM / antonioleiva / weatherapp / UI / App.kt 和 https://github.com/antoniolg/Kotlin-for-Android-Developers/blob/master/app/src/main/java/com/antonioleiva/weatherapp/extensions/DelegatesExtensions.kt 为什么? java.lang.RuntimeException: Unable to start activity ComponentInfo{info.dodata.mirror/ui.UIMain}: java.lang.IllegalStateException: instance not initialized at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2107) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2132) at android.app.ActivityThread.access$700(ActivityThread.java:140) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4918) at […]

从Java类inheritance的数据类

我有一个Kotlin中的数据类inheritance自一个Java类,它定义了一个带有1个参数的构造函数, public BaseClass(String userSessionId) { this.userSessionId = userSessionId; } 我的Kotlin类被定义为这个 class DerivedClass( userSessionId: String, var other: Other? = null ) : BaseClass(userSessionId) { 我不能将其定义为数据类,因为userSessionId是Kotlin要求的数据类中的一个val或var。 但是,如果我这样做了,那么Retrofit会抛出一个exception,因为有两个成员userSessionId。 有一种方法来从一个Java类inheritance一个构造函数参数的数据类? 请注意,我不能更改基类。 一个可能的解决方案是定义一个虚拟val来避免名称冲突,但这不是理想的 data class DerivedClass( val dummy: String, var other: Other? = null ) : BaseClass(dummy) {

Android的奥利奥(API26)和android.app.DownloadManager

乡亲! 此代码不适用于Android奥利奥(但在旧版本上可以,我可以看到通知和DownloadManager.ACTION_DOWNLOAD_COMPLETE广播消息)。 科特林 testButton.setOnClickListener { val downloadManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager val uri = Uri.parse(“[url for a mp3 file]”) val request = DownloadManager.Request(uri) request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI) request.setAllowedOverRoaming(false) request.setTitle(“Test mp3”) request.setDescription(“Wow!”) request.setVisibleInDownloadsUi(true) request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE) request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, “/GadgetSaint/” + “/” + “Sample” + “.mp3”) val reference = downloadManager.enqueue(request) }