小编Jay*_*ard的帖子

Firebase的数据类空构造函数

data class MainPosts(val context: Context, val posts: Posts, val livePost: LivePosts?)
{
    constructor() : this(null!!, null!!, null!!) 
}
Run Code Online (Sandbox Code Playgroud)

嘿,我一直在试图弄清楚如何在Firebase的数据类上创建一个空的构造函数.

我尝试了上面的代码,但它没有正常工作.

kotlin firebase firebase-realtime-database

3
推荐指数
1
解决办法
750
查看次数

如何在Kotlin中获取变量的名称?

我的应用程序中有一个带有许多属性的Kotlin类,我想构建的是一种将变量名存储在字典中的方法。字典看起来像这样:

HashMap<String, Pair<Any, Any>>()
Run Code Online (Sandbox Code Playgroud)

这样做的目的是存储对特定属性所做的更改,我将变量的名称存储为键,在对中存储旧值和新值。为了通知更改,我使用观察者模式。因此,每当从属性调用设置器时,都会通知更改并将其存储到字典中。

以下代码导致以下问题:

var person = Person("Harry", 44)
person.age = 45
Run Code Online (Sandbox Code Playgroud)

HashMap("age", (44, 45))

现在,我只是将变量名硬编码为字符串,所以我的问题是:

如何在Kotlin中动态获取变量名?

我在Java中看到了相同的问题:Java思考:如何获取变量的名称?

另外,关于同一主题的其他一些问题声称这是不可能的:获取变量的name属性

我可以理解,不可能获得变量的名称,因为简单的编译器没有该信息,但是我仍然急于查看其他人是否对此问题有任何解决方案。

variable-names kotlin delegated-properties

3
推荐指数
3
解决办法
3007
查看次数

在保存实例状态下在捆绑包中传递kotlin函数时,出现NotSerializableException

在我将kotlin函数传递进去之后BundleonSaveInstanceState我得到了NotSerializableException:

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = MyActivity$showFragmentA$1)
                                                                  at android.os.Parcel.writeSerializable(Parcel.java:1447)
                                                                  at android.os.Parcel.writeValue(Parcel.java:1395)
                                                                  at android.os.Parcel.writeArrayMapInternal(Parcel.java:665)
                                                                  at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330)
                                                                  at android.os.Bundle.writeToParcel(Bundle.java:1079)
                                                                  at android.os.Parcel.writeBundle(Parcel.java:690)
                                                                  at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3269)
                                                                  at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3632)
                                                                  at android.os.Handler.handleCallback(Handler.java:815)
                                                                  at android.os.Handler.dispatchMessage(Handler.java:104)
                                                                  at android.os.Looper.loop(Looper.java:207)
                                                                  at android.app.ActivityThread.main(ActivityThread.java:5728)
                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
                                                               Caused by: java.io.NotSerializableException: MyActivity
                                                                  at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1344)
                                                                  at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
                                                                  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
                                                                  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
                                                                  at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959)
                                                                  at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360)
                                                                  at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054)
                                                                  at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384)
                                                                  at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
                                                                  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
                                                                  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
                                                                  at android.os.Parcel.writeSerializable(Parcel.java:1442)
                                                                  at android.os.Parcel.writeValue(Parcel.java:1395) 
                                                                  at android.os.Parcel.writeArrayMapInternal(Parcel.java:665) 
                                                                  at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330) …
Run Code Online (Sandbox Code Playgroud)

kotlin

2
推荐指数
1
解决办法
1403
查看次数

是否有 Kotlin-Multiplatform 功能或模式可以帮助实现通用抽象,例如 Closeable 接口?

Java中的Closeable接口提供了一种方便的抽象,可以方便地管理可关闭的资源。在多平台 kotlin 的背景下,是否有一种模式、实践或功能可以帮助打破共享/多平台 Closeable 接口和实际的 Java Closeable 接口之间的差距,因为它们必然是两种不同的类型?

无法关闭类型差异和/或具有标准库可关闭的影响是 Closeable 接口的激增,即使它们本质上是相同的东西,也无法跨库组合。

kotlin kotlin-native kotlin-multiplatform

2
推荐指数
1
解决办法
849
查看次数

如何使名字开头的两个字符首字母缩略的缩略图?

我想在图像视图中像“ Peter Parker”一样用两个单词缩略的首字母缩略词,但是在运行代码时只能得到一个单词“ P”,而在我的代码空间之后如何获得第二个单词。

  holder.imgName?.text=teamData[position].userImage.substring(0,1)
Run Code Online (Sandbox Code Playgroud)

android thumbnails kotlin android-recyclerview

2
推荐指数
2
解决办法
546
查看次数

如何在android中保存函数调用并再次使用它Android

假设我有一个函数fun myFunction(name:String, email:String){},当我调用此函数时,myFunction('Ali', 'ali@test.com')如何保存此调用并在以后使用它同样使用相同的参数调用?

android kotlin

2
推荐指数
1
解决办法
128
查看次数

如何在定位JavaScript时表示多种类型(联合类型)

我想要做的是使用可以是其他三种类型之一的泛型类型.

这是一个函数示例:

fun <T> get(key: String) : T where T: String, T: Number, T: Boolean {}
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,那我该怎么做呢?

kotlin kotlin-js-interop

1
推荐指数
1
解决办法
785
查看次数

如何将此 Java 类重写为 Kotlin 数据类?

我在 Java 中有这个:

public class User {

    String name;
    String id;
    int age;

    public User(String name) {
        this.name = name;
    }

    public User(String name, String id) {
        this.name = name;
        this.id = id;
    }

    public User(String id, int age) {
        this.id = id;
        this.age = age;
    }

    public User() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id …
Run Code Online (Sandbox Code Playgroud)

kotlin

1
推荐指数
1
解决办法
2245
查看次数

杰克逊未能对Kotlin数据类进行反序列化

我正在使用Jackson对Kotlin数据类进行反序列化.我正在使用jackson-kotlin-module但杰克逊给了我以下错误:

无法构造MyClass的实例:找不到合适的构造函数,不能从Object值反序列化

我已经尝试添加proguard规则来保存我的类,它的构造函数没有任何成功.

如果我添加一个规则来保留所有kotlin类,那么错误就会消失.

有任何想法吗?

proguard jackson kotlin

1
推荐指数
1
解决办法
930
查看次数

lateinit 属性尚未初始化我找不到初始化它的方法

我的 Kotlin 活动中有 lateinit 属性,这是它的简化版本:

class CreateNewListOfQuestions : AppCompatActivity() {
    lateinit var questionAnswerListOfObjects: ArrayList<QuestionAnswerObject>
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_create_new_list_of_questions)

        save.setOnClickListener {
            questionAnswerListOfObjects.add(0, QuestionAnswerObject("question", "answer", 1))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

主要问题是当我生成移动应用程序并按“保存”按钮时,应用程序停止工作。Logcat 显示此错误:“lateinit 属性 questionAnswerListOfObjects 尚未初始化”

我尝试了很多方法来初始化它,但这些方法对我没有帮助。我应该如何正确初始化它?我想将这个类的许多对象添加到 ArrayList 中:

class QuestionAnswerObject(var question: String, var answer: String, var probability: Int=100) {}
Run Code Online (Sandbox Code Playgroud)

android kotlin

1
推荐指数
1
解决办法
4083
查看次数