简体   繁体   English

在 Java 代码中使用 kotlin 扩展 function

[英]Using kotlin extension function in Java code

I have created an extension function for listening to click listener for buttons, when I try to access it from Java code it does not work,我创建了一个扩展 function 用于监听按钮的单击监听器,当我尝试从 Java 代码访问它时它不起作用,

Cannot access clicks() from java file, this is what I tried无法从 java 文件访问 clicks(),这是我尝试过的

Can you please suggest how to resolve this.你能建议如何解决这个问题。

Thanks R谢谢 R

File - Extension.kt文件 - 扩展名.kt

   fun Button.clicks(): Flow<Unit> = callbackFlow {
        setOnClickListener {
            offer(Unit)
        }
        awaitClose { setOnClickListener(null) }
    }

In my java code - FillingFragment.java在我的 java 代码中 - FillingFragment.java

 @NotNull
    @Override
    public Flow<Void> getStartFillingObservableFlow() {
        return dataViewHolder.btnStartFilling.clicks(); //CLICKS IS NOT. RECOGNISED
    }

DataViewHolder.Java DataViewHolder.Java

  @BindView(R.id.start_filling_action)
    public Button btnStartFilling;

Extension functions usually compiles to statics functions so you can invoke them like this:扩展函数通常编译为静态函数,因此您可以像这样调用它们:

ExtensionKt.clicks(dataViewHolder.btnStartFilling);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM