【问题标题】:How to refer to a public method of a java Activity class from the Kotlin companion object?如何从 Kotlin 伴随对象中引用 java Activity 类的公共方法?
【发布时间】:2021-11-26 06:33:10
【问题描述】:

我的 Android 应用中混合了 Kotlin 和 Java 代码。我需要引用在具有来自 Kotlin 伴随对象的 java 代码的 Activity 中声明的公共 void 方法。我尝试了一些方法,包括将方法设为静态但没有用。

// java code
public class SampleActivity extends Activity{

     public void toggleMark(boolean canTic)
     { // some code }

}

//Kotlin code
class MyUtils {

    companion object {

         fun setTicPref(context: Context)
         {
             // some code 
             (context as SampleActivity).toggleMark(true) // cannot find declaration to go to

         }
    }

}

【问题讨论】:

  • 为什么你的参数Context当你需要它是SampleActivity?这应该可以工作,所以我认为除了之前在类声明中忘记了public 关键字之外,您在显示的代码中还遗漏了一些细节。

标签: java android kotlin


【解决方案1】:

公开SampleActivity

改变

class SampleActivity extends Activity{

     public void toggleMark(boolean canTic)
     { // some code }

}

public class SampleActivity extends Activity{

     public void toggleMark(boolean canTic)
     { // some code }

}

【讨论】:

  • 已经公开,Activity默认公开。
  • @RKB "Activity 是默认公开的" - 用于 kotlin,在 java 中如果没有访问说明符,则为 defined as default
  • @Nitish,正如我所提到的,它已经公开了。我已经编辑了问题中的代码。当您在 Android Studio 中创建 Activity 时,默认情况下它具有公共访问权限。你可以验证一下。
  • @RKB 所以你的问题已经通过添加public 解决了,对吧?
  • 没有。请仔细看我的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
相关资源
最近更新 更多