Kotlin:使用对象与类的范围

我有几个数据类,就是简短的,所以我把它们放在一个文件中。 我可以将它们定义在一个Kotlin文件中,但是它更喜欢它是一个类/对象的范围,所以这个文件不仅仅是一个文件,而是在类/对象之下,以便更好的分组 我可以 object Model { data class Result(val query: Query) data class Query(val searchinfo: SearchInfo) data class SearchInfo(val totalhits: Int) } 我也可以做 class Model { data class Result(val query: Query) data class Query(val searchinfo: SearchInfo) data class SearchInfo(val totalhits: Int) } 他们对我来说都一样。 有什么不同呢,如果在确定我的数据类方面有一个首选方法?

使用kotlin编译android项目时出错

我正在使用Android工作室3.0.1,我正在尝试做一个kotlin项目。 当我尝试构建项目时出现错误。

Int上的Kotlin引用平等行为,值介于-128到127之间

我正在给自己,直到上午十二点才学习,并获得生产力(希望)kotlin。 以下https://kotlinlang.org/docs/kotlin-docs.pdf我试过第17页上的这些片段。任何人都可以请帮我理解为什么===如果值介于-128到127之间,则返回true 。 以下确实打印false : val a: Int = 10000 val boxedA: Int? = a // Integer@445 val anotherBoxedA: Int? = a // Integer@447 why? print(boxedA === anotherBoxedA) // false 但是,将-128更改a -128至127之间的任何值始终显示为true : val a: Int = -128 val boxedA: Int? = a // Integer@445 val anotherBoxedA: Int? = a // Integer@445 why? print(boxedA === […]

如何访问反映在kotlin的静态字段?

我在java中有这个抽象类: abstract class AbsApiTestCase { T mApi; @Before public void setUp() throws Exception { mApi = instanceApi((Class) ( (ParameterizedType) getClass().getGenericSuperclass()) .getActualTypeArguments()[0]); } static T instanceApi(Class clazz) throws Exception { return new Retrofit.Builder() .baseUrl(clazz.getField(“BASE_URL”).get(null).toString()) .addConverterFactory(GsonConverterFactory.create( new GsonBuilder().setDateFormat(“yyyy-MM-dd HH:mm:ss”).create())) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(getClient()) .build().create(clazz); } // some code } 而api看起来像这样: public interface GithubApi { String BASE_URL = “https://api.github.com/”; // […]

如何在Kotlin的字符串中替换重复的空格?

说我有一个字符串: “Test me” 。 我如何将其转换为: “Test me” ? 我试过使用: string?.replace(“\\s+”, ” “) 但似乎是Kotlin的非法逃跑。

如何从Kotlin代码动态设置权重属性?

我怎样才能从Kotlin代码动态地设置LinerLayout属性layout_weight的值? var orange : LinearLayout = findViewById(R.id.orangeLineFiveStars) as LinearLayout 它是正确的代码? [它不适用于我的应用程序] var orangeParams : LinearLayout.LayoutParams = LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) orangeParams.weight = 0.33f orange.layoutParams = orangeParams 此代码不起作用 var orange.layoutParams = LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT,0.33f) XML:

如何通过意图在kotlin传递自定义对象

fun launchNextScreen(context: Context, people: People): Intent { val intent = Intent(context, NextScreenActivity::class.java) intent.putExtra(EXTRA_PEOPLE, (Parcelable) people) //intent.putExtra(EXTRA_PEOPLE, people as Parcelable) //intent.putExtra(EXTRA_PEOPLE, people) // tried above all three ways return intent } 尝试上面的代码,通过意图使用kotlin传递人类types的人物,但得到错误。 请帮我解决这个问题。

你如何建立一个Kotlin多平台构建?

我想建立相同的kotlin源代码到JavaScript和Java(安卓)。 有没有一个标准的方法来实现这一目标?

我正在获取Kotlin安全调用的重载解析模糊错误

我有一个可以为空的字符串variablesab 。 如果我在给它赋值为null之后通过安全调用操作符来调用UpperCase,kotlin会给出错误。 fun main(args: Array){ var ab:String? = “hello” ab = null println(ab?.toUpperCase()) } 错误:(6,16) 重载分辨率模糊性: @InlineOnly public inline fun Char.toUpperCase():在kotlin.text中定义的字符 @InlineOnly public inline fun String.toUpperCase():在kotlin.text中定义的字符串 这里有什么问题?

kotlin coroutine抛出java.lang.IllegalStateException:已经恢复,但得到了值的位置

一般来说,我对Kotlin协同程序和Android开发很陌生。 在玩弄了解它是如何工作的时候,我遇到了一个我似乎无法解决的错误。 从基本的活动,我尝试连接到googleApiClient。 权限是可以的。 我希望使用kotlin协同程序以直接方式从LocationManager获取位置更新,以便稍后使用此位置对象。 我第一次在模拟器中改变自己的位置时,它工作的很好,第二次改变我的位置,它崩溃,像这样的exception: FATAL EXCEPTION: main Process: com.link_value.eventlv, PID: 32404 java.lang.IllegalStateException: Already resumed, but got value Location[gps 48.783000,2.516180 acc=20 et=+59m16s372ms alt=0.0 {Bundle[mParcelledData.dataSize=40]}] at kotlinx.coroutines.experimental.AbstractContinuation.resumeImpl(AbstractContinuation.kt:79) at kotlinx.coroutines.experimental.AbstractContinuation.resume(AbstractContinuation.kt:72) at com.link_value.eventlv.View.Create.NewEventLvActivity$await$2$1.onLocationChanged(NewEventLvActivity.kt:100) at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:297) at android.location.LocationManager$ListenerTransport.-wrap0(LocationManager.java) at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:242) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) override fun onCreate(savedInstanceState: Bundle?) { […]