Tag: 安卓

Android Studio Lint检查Kotlin高阶函数

我已经看到下面这个高阶函数的例子被用作一个方便的方法来包装Android API版本检查。 fun isLollipop(func: () -> Unit) { if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { func() } } 但是,在Android Studio 3.0(Kotlin版本1.2.0)中,如果我尝试使用需要Lollipop的API(该项目的minSdk为17),则会看到lint错误。 例如: isLollipop { appBarLayout.elevation = 4f } Lint抱怨elevation属性上的API最小值。 正如一个侧面说明,如果您将函数编写为inline fun函数,则无关紧要,lint仍会提供相同的警告。 使用内联函数,反编译的Java代码显然被版本检查包围。 我刚才发现了这个讨论,但似乎Kotlin团队已经整合了支持。 https://youtrack.jetbrains.com/issue/KT-7729 lint系统是否支持查看高阶函数?

用于将方法参数分配给Android Studio中的字段的Kotlin快捷方式

在Android Studio中,当我按下Alt + Enter并将方法参数分配给类成员字段时,正在处理Java类。 但是,当我使用Kotlin没有建议这个function。 我可以为此创建一个新的建议还是有任何方法来分配参数的字段? Java类建议: Kotlin课堂建议:

Gradle sinc以kotlin扩展失败。 输入字符串:“”在build.gradle文件模块(应用程序)

我遇到以下错误,当我尝试构建我的应用程序。 它已经建立与kotlin扩展,但突然它给了我这个错误。 Gradle同步失败:对于输入字符串:“”,它指向build.gradle应用插件:“kotlin-android”行。

从Java转换到Kotlin之后,Dagger的模块不工作

我用Dagger 2为Android创建了简单的应用程序。它有一个共享对象和一个模块。 该模块是: @Module public class MyModule { @Provides @Singleton public Hren providesHren() { return new Hren(); } } 这个模块工作。 但是当我将它转换为Kotlin时,我得到编译时错误: > Task :app:compileDebugJavaWithJavac …../DaggerMyApplicationComponent.java:26: error: cannot find symbol DoubleCheck.provider(MyModule_ProvidesHrenFactory.create(builder.myModule)); ^ symbol: variable MyModule_ProvidesHrenFactory location: class DaggerMyApplicationComponent 1 error 转换后的这个模块: @Module class MyModule { @Provides @Singleton fun providesHren(): Hren { return Hren() } } 怎么了? […]

Kotlin – 重写方法中的IllegalArgumentException

在Kotlin中,我重写了这两个Google Sign-In函数: override fun onConnectionFailed(result: ConnectionResult) { if (result.hasResolution()) { try { result.startResolutionForResult(this, RESOLVE_CONNECTION_REQUEST_CODE) } catch (e: IntentSender.SendIntentException) { // Unable to resolve, message user appropriately } } else { val gaa = GoogleApiAvailability.getInstance() gaa.getErrorDialog(this, result.errorCode, 0) } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { when (requestCode) { RESOLVE_CONNECTION_REQUEST_CODE -> if (resultCode […]

设置一个字段的值,而不用调用set方法 – Kotlin

我一直在使用Kotlin在Android中开发一些应用程序,而现在我想要做的是在定义的类中设置一个字段值,而不用调用setter方法。 这里是我的课堂里的代码: var projectList: List? = null set(value) { saveProjects(value as ArrayList) field = value } //GO to the database and retrieve list of projects fun loadProjects(callback: Project.OnProjectsLoadedListener) { database.projectDao().getAll().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) .subscribe( { success -> callback.onProjectsLoaded(success) //Here i don’t want to save the projects, because i’ve loaded them from the database this.projectList = success }, { […]

“没有足够的信息来推断参数T”与Kotlin和Android

我想在我的Android应用程序中使用Kotlin复制以下ListView: https : //github.com/bidrohi/KotlinListView 。 不幸的是,我得到一个错误,我无法自己解决。 这是我的代码: MainActivity.kt: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val listView = findViewById(R.id.list) as ListView listView.adapter = ListExampleAdapter(this) } private class ListExampleAdapter(context: Context) : BaseAdapter() { internal var sList = arrayOf(“Eins”, “Zwei”, “Drei”) private val mInflator: LayoutInflater init { this.mInflator = LayoutInflater.from(context) } override fun getCount(): Int { return […]

我怎样才能避免在Kotlin空属性

我从一段时间以来一直在使用Kotlin,但是我无法实现Kotlin中所有属性的非空types。 请看下面的代码,有一些场景我必须使用空types。 我知道我可以使用lateinit但在某些情况下,它不适合。 我怎样才能在我的代码中避免null? 如果任何人都可以重新编写没有空types的代码或纠正我的错误,对我来说,了解所有的东西已经足够了。 class MusicService : Service(), PlaybackManager.PlaybackServiceCallback { private val mDelayedStopHandler = DelayedStopHandler(this) private val eventBus = EventBus.getDefault() //How to avoid nullable types private var mMediaNotificationManager: MediaNotificationManager? = null private var mSession: MediaSessionCompat? = null var mSessionToken: MediaSessionCompat.Token? = null var mPlaybackManager: PlaybackManager? = null var mTransportControls: MediaControllerCompat.TransportControls? = null override fun […]

Kotlin使用Gson的JSONParser解析对象数组

我有这些类写在kotlin,位置,其余的是在Application.kt @RealmClass open class Location( @PrimaryKey @SerializedName(“id”) var id: Int = 0, @SerializedName(“city_name”) var city_name: String? = null, @SerializedName(“elevation”) var elevation: Int = 0, @SerializedName(“state_code”) var state_code: String? = null, @SerializedName(“state_name”) var state_name: String? = null, @SerializedName(“country_code”) var country_code: String? = null, @SerializedName(“country_name”) var country_name: String? = null ):RealmObject() 其余的: private fun loadStuff() { val […]

如何在我的Kotlin类中创建一个匿名接口实现并使用它?

我怎么能有这样的Kotlin的Java代码? 甚至IDE也不会完全将其转换为Kotlin! /** Defines callbacks for service binding, passed to bindService() */ private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { // We’ve bound to LocalService, cast the IBinder and get LocalService instance LocalBinder binder = (LocalBinder) service; mService = binder.getService(); mBound = true; } @Override public void onServiceDisconnected(ComponentName […]